Javascript 循环中的document.getElementById
假设我想为下面示例中所有具有类“the_class”的div更改类。当循环遍历一个长列表(300 li和许多嵌套的div标记)时,添加编号的id是否是一个好方法。或者document.getElementById在这种情况下会变慢吗 因为我控制HTML/PHP,所以添加ID对我来说不是问题。但我认为“document.getElementById”每次都会遍历整个文档。也许其他方法不会每次都循环整个过程,因此速度更快 JAVASCRIPTJavascript 循环中的document.getElementById,javascript,Javascript,假设我想为下面示例中所有具有类“the_class”的div更改类。当循环遍历一个长列表(300 li和许多嵌套的div标记)时,添加编号的id是否是一个好方法。或者document.getElementById在这种情况下会变慢吗 因为我控制HTML/PHP,所以添加ID对我来说不是问题。但我认为“document.getElementById”每次都会遍历整个文档。也许其他方法不会每次都循环整个过程,因此速度更快 JAVASCRIPT var data_length = document.g
var data_length = document.getElementById('the_ul').getAttribute('data-length'),
i = 0;
while(i++ < data_length) {
document.getElementById('id_name' + i).className = 'a_new_class';
}
var data_length=document.getElementById('the_ul').getAttribute('data-length'),
i=0;
while(i++<数据长度){
document.getElementById('id_name'+i).className='a_new_class';
}
HTML
<ul id=the_ul data-length="2">
<li>
<div>
<div>
<div>content1</div>
<div id=id_name1 class=the_class>content2</div>
<div>content3</div>
</div>
</div>
</li>
<li>
<div>
<div>
<div>content1</div>
<div id=id_name2 class=the_class>content2</div>
<div>content3</div>
</div>
</div>
</li>
</ul>
-
内容1
内容2
内容3
-
内容1
内容2
内容3
另一种选择是document.getElementsByClassName
var el = document.getElementsByClassName("the_class")
for (var i = 0, ilen = el.length - 1; i < ilen; i++) {
el[i].className = "a_new_class"
}
根据一个简单的测试,
document.getElementsByClassName
似乎具有最好的性能 另一种选择是document.getElementsByClassName
var el = document.getElementsByClassName("the_class")
for (var i = 0, ilen = el.length - 1; i < ilen; i++) {
el[i].className = "a_new_class"
}
根据一个简单的测试,
document.getElementsByClassName
似乎具有最好的性能 看到或看到。注意浏览器限制。谢谢jbabey。您的意思是getElementsByClassName将比我的方法快吗?请参阅或。注意浏览器限制。谢谢jbabey。你是说getElementsByClassName会比我的方法快吗?IE 9支持getElementsByClassName per@TonyAdams哦,我不知道当时我写anser时是怎么想的。。谢谢你的评论!:)这确实是一个总体上糟糕的答案。我真丢脸。IE 9支持getElementsByClassName per@TonyAdams噢,我不知道我写anser的时候是怎么想的。。谢谢你的评论!:)这确实是一个总体上糟糕的答案。我真丢脸。