0

私は次のようなことをしたい:

var i=0;

while(i<20)
{
  var temp= document.getElementById(''+20);
  $(temp).hide();
  i++;
}

それをしてもいいですか?試してみましたが、うまくいきませんでした。

4

5 に答える 5

1

はい、例:

for (var i=0; i < 20; i++) {
  var temp = document.getElementById(i);
  console.log(temp);
}

作業サンプル: http://jsfiddle.net/bqF9T/

ただし、コメントに記載されているように、HTML が無効な場合、Chrome で機能することが他のブラウザーでは機能しない可能性があるため、必ず有効な ID を使用してください。

于 2012-11-21T21:00:29.020 に答える
0

これを試して:

var i = 0;

while(i < 20){
    var temp = document.getElementById('Elid_'+i);
    // DO STUFF
    i++;
}

無限ループがありました (i は常に 20 より小さかった)。また、i の代わりに静的な数値 20 を使用しましたか。多かれ少なかれ動的な数そして、他に言及したように、IDは数字だけで始めることはできません...

于 2012-11-21T21:00:38.733 に答える
0

実際に無限ループを作成しました。i の値を変更しないため、i は永久に 0 になり、常に < 20 になります。

また、単なる数字ではない要素 ID を指定する必要があります (これは機能しないため)。

<div id='something1'></div>

次のように for ループを試してください。

// Wait for the page to finish loading.
window.onload = function() {
    // Run your loop.
    for(var i = 0; i < 20; i++) {
        var temp = document.getElementById('something' + i);

        // Do stuff with temp.
    }
}

// Or, with jQuery
$(document).ready(function() {
    // Run your loop.
    for(var i = 0; i < 20; i++) {
        var $temp = $('#something' + i);

        $temp.hide();

        // Or, if you're only hiding...
        $('#something' + 1).hide();
    }
});
于 2012-11-21T21:01:18.127 に答える
0

ID は数字で始めることはできないため、カウントの前に何かを指定する必要があります。

ID および NAME トークンは文字 ([A-Za-z]) で始まる必要があり、その後に任意の数の文字、数字 ([0-9])、ハイフン ("-")、アンダースコア ("_") を続けることができます、コロン (":")、およびピリオド (".")。

そのため、有効にするために他の何かを前に付けて、「example_」を選択しました。

もう 1 つの問題は、常に ID に「20」が含まれる要素を取得しようとしていることです。それらすべてを取得したいので、ループ カウンターを使用する必要がありますi

また、カウンターは 0 から 19 まで ( i = 20,i<20が FALSE の場合) になるので、マークアップと一致するように注意してください。

JS:

var i=0;

while(i<20)
{
  var temp= document.getElementById('element_' + i);
  $(temp).hide();
  i++;
}

マークアップは次のようになります。

<div id="element_0">first</div>
<div id="element_1">second</div>
<div id="element_2">foo</div>
...
<div id="element_19">bar</div>
于 2012-11-21T21:04:42.640 に答える
0

id="htmlID1-20" の要素のコレクションがある場合、コードを次のように変更できます。

var i = 20
  , elems = [] // empty array to keep the elements
while(i--){  //this trick reduces the variable i by 1 each time the loop runs, stopping at 0
    elems.push(document.getElementById("htmlID"+i)) //collect the dom elements and push a refrance to it in the array
}
console.log(elems)

ループ内で変数や関数を作成することはお勧めしません

于 2012-11-21T21:05:02.993 に答える