私は次のようなことをしたい:
var i=0;
while(i<20)
{
var temp= document.getElementById(''+20);
$(temp).hide();
i++;
}
それをしてもいいですか?試してみましたが、うまくいきませんでした。
私は次のようなことをしたい:
var i=0;
while(i<20)
{
var temp= document.getElementById(''+20);
$(temp).hide();
i++;
}
それをしてもいいですか?試してみましたが、うまくいきませんでした。
はい、例:
for (var i=0; i < 20; i++) {
var temp = document.getElementById(i);
console.log(temp);
}
作業サンプル: http://jsfiddle.net/bqF9T/
ただし、コメントに記載されているように、HTML が無効な場合、Chrome で機能することが他のブラウザーでは機能しない可能性があるため、必ず有効な ID を使用してください。
これを試して:
var i = 0;
while(i < 20){
var temp = document.getElementById('Elid_'+i);
// DO STUFF
i++;
}
無限ループがありました (i は常に 20 より小さかった)。また、i の代わりに静的な数値 20 を使用しましたか。多かれ少なかれ動的な数そして、他に言及したように、IDは数字だけで始めることはできません...
実際に無限ループを作成しました。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();
}
});
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>
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)
ループ内で変数や関数を作成することはお勧めしません