我想做类似的事情:
var i=0;
while(i<20)
{
var temp= document.getElementById(''+20);
$(temp).hide();
i++;
}
我能这样做吗?我试过了,但没办法。
答案 0 :(得分:1)
是的,例如:
for (var i=0; i < 20; i++) {
var temp = document.getElementById(i);
console.log(temp);
}
工作样本:http://jsfiddle.net/bqF9T/
但正如评论中所述,如果HTML无效,那么在{* 3}}中可能无法在其他浏览器中使用Chrome浏览器。
答案 1 :(得分:0)
试试这个:
var i = 0;
while(i < 20){
var temp = document.getElementById('Elid_'+i);
// DO STUFF
i++;
}
你有一个无限循环(我总是小于20) 你也使用静态数字20代替i。或多或少的动态数字 而作为其他地方,ID不能仅以数字开头......
答案 2 :(得分:0)
您实际上创建了一个无限循环。由于你没有改变i的值,它将永远为0,因此总是&lt; 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();
}
});
答案 3 :(得分:0)
ID's can't begin with a number,所以你必须在计算之前得到一些东西。
ID和NAME令牌必须以字母([A-Za-z])开头,可能是 后跟任意数量的字母,数字([0-9]),连字符(“ - ”), 下划线(“_”),冒号(“:”)和句点(“。”)。
因此,在其前面添加其他内容以使其有效,我选择了“example_
”。
另一个问题是你总是试图在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>
答案 4 :(得分: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)
在循环中创建变量或函数不是重要的。