JS求助:为什么最后的this不能换成LII【i】.
javascript吧
全部回复
仅看楼主
level 3
为什么最后面的this.getAttribute("score")中的this 不能换成Lii[i],一换就报错,难道this指向的不是这个对象吗?
2019年02月28日 14点02分 1
level 10
你又没手动改变函数的指针,为啥this会指代当前对象?换句话说,函数外一层this指的是啥,函数内指的就是啥,除非手动指定。
2019年03月05日 04点03分 6
level 1
这个就是作用域的问题了。
为什么最后面的this.getAttribute("score")中的this 不能换成Lii[i],一换就报错,难道this指向的不是这个对象吗?
Lii[i]这个i你知道取值是多少嘛
2019年03月05日 06点03分 7
level 1
<!DOCTYPE html>
<html>
<body>
<div style="color:#00FF00">
<h3>This is a header</h3>
<h3>This is a header</h3>
<h3>This is a header</h3>
<p>This is a paragraph.</p>
</div>
<script>
var lis=document.getElementsByTagName("H3")
for(var i=0;i<lis.length;i++){
lis[i].d=i;
lis[i].onclick=function(){
for(var j=0;j<i;j++){
if(this.d==j){
lis[j].style.background="green"
break;
}
}
}
}
</script>
<p>上面的段落被一段脚本改变了。</p>
</body>
</html>
2019年03月05日 07点03分 8
大佬,我也遇到这个问题了,朋友给我发的代码也是写有‘lis[i].d=i;’,这个“lis[i].d=i;”到底该怎么理解
2019年03月05日 10点03分
@💕纸片人 加了个自定义属性
2019年03月20日 06点03分
level 6
This指的是是当前作用域
2019年03月20日 13点03分 9
level 4
因为你在循环里面有个函数,举个栗子,,有三个按钮,你全部循环给与点击事件,但是你还未触发这个事件,这时候的li[i],i已经循环了3次,i变成了3,当你点击任意一个按钮的时候,只能用this表示,因为你触发了这个按钮,如果你用li[i]来表示的话,li[i]中的i已经变成了4,只有三个按钮,没第四个,所以就会出错
2019年03月20日 18点03分 10
level 4
像你这个,无论你点击哪个li,执行的函数永远都会是li[9],因为在给与所有li点击事件的时候,已经跳出了for循环
2019年03月20日 18点03分 11
1