1

現在の init() コードは、'desc_1'、'desc_2'、'desc_3' などで始まる要素 ID を対象としています。

function init(){
   var max = 50000;
   for (i = 1; i < max; i++){
      makeEditable('desc_'+i);}
}

ページ上の要素のほとんどは実際には 1 から始まりません。 ','desc_101'.

これらのタイプの要素 ID をターゲットにするには、どのような init() ステートメントを作成する必要がありますか? 前もって感謝します!

4

2 に答える 2

1

50000 IDを推測する代わりに、で始まるIDを持つすべての要素を選択し、desc_その要素をに渡しmakeEditable()ます。

var els = document.querySelectorAll("*[id^=desc_]");

for (var i = 0; i < els.length; i++) {
    makeEditable(els[i]);
}

*それらがすべて同じ要素タイプである場合は、セレクターでタグ名に置き換えます。

そのIDで始まる他の要素がある場合は、それらを直接ターゲットにできるように、要素にクラスを割り当てます。

クラスを追加できない場合は、クラスを渡す前に、id各要素のをテストして、最後に番号が付いていることを確認する必要があります。

于 2012-10-10T17:38:24.597 に答える
0

古いブラウザーのサポートを探している場合は、次の方法で行うことができます (少し面倒かもしれません)。

var divs = document.getElementsByTagName('div'),
        len = divs.length,
        myArray = [];

    for (var i = 0;i<len;i++)   {
        if (divs[i].id.substring(0,4) == "desc")    {
            makeEditable(divs[i]);
        }
    }
于 2012-10-10T17:51:39.127 に答える