如何通过 javascript 更改类的所有元素的字体颜色?[重复]
2020-01-17
5103
我有一个按钮可以更改我的 Web 应用程序的背景图像,我想在单击该按钮时更改字体的颜色。
我尝试将元素设为自己的变量,但这也不起作用。
cafeButton.addEventListener('click', function(){
bg.style.backgroundImage = "url('img/cafe.jpeg')"; //change text colors
document.getElementsByClassName('topbutton').style.color = 'blue';
})
使用上述代码时,我收到以下错误:
未捕获的 TypeError:无法在 HTMLButtonElement 上设置未定义的属性“color”。
这是整个项目的代码笔 https://codepen.io/Games247/pen/XWJqebG
如何更改类名下所有元素的文本颜色?
3个回答
document.getElementsByClassName
返回 DOM 节点列表。因此您需要循环遍历它并单独将样式应用于所有元素。
cafeButton.addEventListener('click', function() {
bg.style.backgroundImage = "url('img/cafe.jpeg')"; //change text colors
var els = document.getElementsByClassName('topbutton');
for (var i = 0; i < els.length; i++) {
els[i].style.color = 'blue';
}
})
Archie
2020-01-17
getElementsByClassName
为您提供
DOMCollection
,它只是数组。因此,您必须为数组中的每个元素设置样式。
例如。
[...document.getElementsByClassName('topbutton')].forEach((ele)=>{ele.style.color = 'blue';});
Ritesh Khandekar
2020-01-17
您这样做的方式是错误的。
document.getElementsByClassName
为您提供特定类的节点列表。因此您必须循环遍历它。因此,在您的代码中使用以下内容:
var nodeList = document.getElementsByClassName('topbutton')
nodeList.forEach(node => {
node.style.color = 'blue'
})
或者您也可以使用
document.querySelectorAll('.topbutton')
而不是
document.getElementsByClassName('topbutton')
Nipun Jain
2020-01-17