Jesse1990
2015-07-05 12:49
在取出元素a的innerHTML后,想赋值给cite。只能用this.innerHTML? 为什么不能用as[i].innerHTML 估计是因为[]可以表示一个元素的属性?
可以运行的代码:
var title=box.getElementsByTagName('cite')[0],
as=box.getElementsByTagName('a');
for(var i=0;i<as.length;i++){
as[i].onclick=function(){
title.innerHTML=this.innerHTML;
}
把上面的this换成as[i]就没法运行。
因为代码执行到onclick的回调方法里的时候,i早就已经++最大值了,超出索引范围了。按你想法改了之后,每次点击a,执行的i总是a的长度。所以你要么是用你的this,还可以用(function(i){
//code here
})(i))这样把i传递进来。
as[i].onclick=function(){
title.innerHTML=this.innerHTML; //改成as[i]这样记录是得到的i最大的值。
}
可以改成这样:
(function(item){
title.innerHTML=item.innerHTML;
}(as[i]))
DOM事件探秘
99545 学习 · 1197 问题
相似问题