<div class="t">Hello</div>
<div class="t">Hello</div>
<script>
function $$(name) {
a = document.getElementsByTagName("*");
for (var i = 0; i < a.length; i++) {
if (a[i].className == name) return a[i];
}
}
$$('t').style.color = "red";
</script>
只有类为“t”的第一个 div 变为红色。我做错了什么?
最佳答案
一旦找到匹配项,您就会退出循环,因此根据定义,只有一个元素会被更改。
哦,如果您要匹配的元素上也有额外的类,您的代码将失败。
最好编写代码以在所有匹配元素上调用回调:
function $$(name, cb) {
var a = document.getElementsByTagName("*");
for (var i = 0; i < a.length; i++) {
if (a[i].className == name) {
cb.apply(a[i])
}
}
}
$$('t', function() {
this.style.color = 'red';
});
或者,只需使用专为此类工作设计的库(例如 jQuery):
$('.t').css('color', 'red');
关于javascript - 试图在 JavaScript 中更改多个项目的属性,只有第一个项目正在改变,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5910436/