在一个非常普遍的情况下,我们需要更改整个元素类的样式。以下是一段(简化和概括的)代码:
var elements = document.getElementsByTagName('div');
for (var i = 0; i < elements.length; i++)
if (elements[i].className == 'HideMe')
elements[i].style.visibility = 'hidden';
它从文档中获取所有的div
元素,循环遍历它们,并将类名为“HideMe”的元素的可见性更改为“hidden”。另一方面,这段代码:
document.innerHTML.replace(/class="HideMe"/mg, 'class="HideMe" style="visibility: hidden"');
将隐形样式插入到所有类名为 "HideMe" 的元素中。我对JavaScript
还很陌生,但不要误会,到目前为止我看到的每个示例、每个教程都是使用第一种方法。一个更聪明的人是否可以创建一个单行函数调用、替换算法,比任何带有if
语句的循环更快、资源消耗更少呢?实际上,这个问题更加普遍,为什么不这样做呢:
document.innerHTML.replace('id="foo"', 'id="bar"');
替代:
document.getElementById('foo').id = 'bar';
经过检查的代码完全相同,但就性能而言,我可能需要更改数千个元素的样式,以便能够测量任何显著的差异。是否有任何好的、有充分理由支持的方法,我们应该优先选择其中之一呢?