link
是您从中获得的集合.getElementsByTagName('a')
,并且没有removeAttribute
方法。要引用循环中的特定项目,您应该使用:
this.removeAttribute("class");
由于您已经了解循环遍历集合和修改集合中每个项目的概念,并且正在使用this
for setAttribute()
,因此您应该继续使用this
来引用您正在修改的集合中的当前项目。
事件处理程序中的值是this
指事件绑定到的元素,这是您似乎想要修改(并且已经在修改)的元素。
另外,我不确定您的代码的重点,因为您删除了该class
属性然后立即重新设置它。如果您确实需要设置属性,则没有理由首先将其删除。如果您只想更改/设置class
,请使用:
this.className = "selected";
根据您的编辑,您可能希望使用:
window.onload = function() {
var link = document.getElementById('subMenu').getElementsByTagName('a');
for (var i = 0; i < link.length; i++) {
link[i].onclick = linkClickHandler;
}
};
function linkClickHandler() {
var links = document.getElementById("subMenu").getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
if (links[i] !== this) {
links[i].className = "";
} else {
links[i].className = "selected";
}
}
}
click
这将为所有找到的元素绑定处理程序。在处理程序中,它循环遍历所有原始元素 - 它为单击的元素设置class
as "selected"
,并将class
所有其他元素设置为""
。