use*_*768 1 javascript class setattribute
window.onload = function() {
var links = document.getElementById('subMenu').getElementsByTagName('a');
for(var i = 0; i < links.length; i++) {
links[i].onclick = function() {
links[i].setAttribute('class', 'selected');
}
}
}
Run Code Online (Sandbox Code Playgroud)
萤火虫表明:
TypeError: link[i] is undefined
link[i].setAttribute('class', 'selected');
Run Code Online (Sandbox Code Playgroud)
小智 6
改变这个:
links[i].setAttribute('class', 'selected');
Run Code Online (Sandbox Code Playgroud)
对此:
this.setAttribute('class', 'selected');
Run Code Online (Sandbox Code Playgroud)
或者更好,对此:
this.className = "selected";
Run Code Online (Sandbox Code Playgroud)
JavaScript中没有块范围,因此i在迭代后您被卡在最后一个值.
但是,由于您只需要使用处理程序对元素进行引用,因此它已经可以通过this处理程序内部访问.
如果确实需要i,那么i每次迭代需要在一个新的变量范围内.
var links = document.getElementById('subMenu').getElementsByTagName('a');
for(var i = 0; i < links.length; i++) {
links[i].onclick = makeHandler(i);
}
function makeHandler(i) {
return function() {
links[i].setAttribute('class', 'selected');
}
}
Run Code Online (Sandbox Code Playgroud)
或者只是将其作为属性添加到DOM元素.
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |