使用 getElementsByClassName 更改元素样式
getElementsByClassName 允许您选择具有相同类名的多个元素。在给出的示例中,代码旨在当事件发生在具有特定类名的所有 div 之外时更改这些 div 的背景颜色。
问题诊断
The提供的代码有一些问题:
解决方案
要解决这些问题,您可以使用以下更正代码:
window.onload = function() {
var aElements = document.getElementsByClassName('a');
var bElements = document.getElementsByClassName('b');
document.getElementById('A').addEventListener('mouseover', function() {
changeColor(aElements, 'red');
});
document.getElementById('B').addEventListener('mouseover', function() {
changeColor(bElements, 'blue');
});
};
function changeColor(elements, color) {
for (var i = 0; i 在此更正后的代码中:
- 我们循环遍历 getElementsByClassName 返回的集合以更改所有匹配元素的样式。
- 我们使用不带空格的正确 ID来识别触发元素。
- 我们定义changeColor函数来将所需的颜色变化应用到elements.
附加说明
为了获得最佳性能,请考虑缓存元素集合,而不是每次都重新查询。此外,使用 CSS 类和事件侦听器进行样式更改比内联属性更有效。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3