Javascript 循环中的document.getElementById

Javascript 循环中的document.getElementById,javascript,Javascript,假设我想为下面示例中所有具有类“the_class”的div更改类。当循环遍历一个长列表(300 li和许多嵌套的div标记)时,添加编号的id是否是一个好方法。或者document.getElementById在这种情况下会变慢吗 因为我控制HTML/PHP,所以添加ID对我来说不是问题。但我认为“document.getElementById”每次都会遍历整个文档。也许其他方法不会每次都循环整个过程,因此速度更快 JAVASCRIPT var data_length = document.g

假设我想为下面示例中所有具有类“the_class”的div更改类。当循环遍历一个长列表(300 li和许多嵌套的div标记)时,添加编号的id是否是一个好方法。或者document.getElementById在这种情况下会变慢吗

因为我控制HTML/PHP,所以添加ID对我来说不是问题。但我认为“document.getElementById”每次都会遍历整个文档。也许其他方法不会每次都循环整个过程,因此速度更快

JAVASCRIPT

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的时候是怎么想的。。谢谢你的评论!:)这确实是一个总体上糟糕的答案。我真丢脸。