我正在尝试使用
onmouseover="document.getElementsByClassName().style.background='color'"
将鼠标悬停在另一个页面元素上时,将具有给定类名的所有div的颜色更改为另一种颜色。
这是一个jsfiddle-如果任何人都可以提供一些有关我哪里出错的有用指针,那将是很棒的,我敢肯定,我确实很想念我。它与document.getElementById一起使用,但是只更改了第一个div的颜色,而不是全部。
谢谢
就像函数名称所暗示的那样,getElementsByClassName返回一个集合,而不仅仅是一个对象。因此,您需要遍历它们并为其应用颜色。
document.getElementsByClassName() ^_______
另外,您的ID部分无效。ID不能有空格,也不应再次出现在页面上,该页面受到以下方面的侵犯:
<th id="colorswitcher A" onmouseover="document.getElementsByClassName('a').style.background='red'">a</th> <th id="colorswitcher B" onmouseover="document.getElementsByClassName('a').style.background='blue'">b</th>
您可以通过这种方式进行操作(您可以查找什么是处理程序,然后尝试使用它。),不要对处理程序使用内联属性。
window.onload=function(){ var aColl = document.getElementsByClassName('a'); //Cache the collection here, so that even a new element added with the same class later we can avoid querying this again by using the cached collection. var bColl = document.getElementsByClassName('b'); document.getElementById('A').addEventListener('mouseover', function(){ changeColor(aColl, 'red'); }); document.getElementById('B').addEventListener('mouseover', function(){ changeColor(bColl, 'blue'); }); } function changeColor(coll, color){ for(var i=0, len=coll.length; i<len; i++) { coll[i].style["background-color"] = color; } }
如果您确实想在实际工作中使用它,则不要更改style属性,而是定义类并在mouseover,mouseout事件上添加/删除类,以便获得CSS的层叠属性的强大功能。