84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
.为什么将以下代码中this,用sui[a]替换时,运行不出效果;
.代码如下
Title 按钮 按钮 按钮 按钮 按钮
人生最曼妙的风景,竟是内心的淡定与从容!
写个详细一点的- -
for (var a = 0; a < sui.length; a++) { sui[a].index = a; //将当前循环的a值保存为当前按钮的index sui[a].onclick = function() { for (var b = 0; b < sui.length; b++) { sui[b].className = ''; } cosole.log(a); sui[this.index].className = 'car'; }; }
console.log(a);你就会发现,a返回的都是最后循环结束的值,你这里就是5,然后你只有5个按钮,就是01234...所以代码无效。
sui[a].index = a可将每个循环的a的值存储到index,然后使用this.index调用,所以应该是sui[this.index]
或者你把最外层的for的var改为let也行,这个写tab选项卡、轮播的控件的时候你都会用得到。
最后你的问题,this是什么?
if (sui[this.index] === this) { console.log('true'); }
var sui=document.getElementsByTagName("button"); for(var a=0;a
但我不会告诉你为w什么。
典型的闭包问题,想深入理解的话自己多看书吧。
sui[a].onclick=function () { for(var b=0;b
最简单的解决方法是把for循环中的var换成let
for(let a=0;a
可以利用自定义属性保存正确的a值,或者利用闭包来保存。
写个详细一点的- -
console.log(a);你就会发现,a返回的都是最后循环结束的值,你这里就是5,然后你只有5个按钮,就是01234...所以代码无效。
sui[a].index = a可将每个循环的a的值存储到index,然后使用this.index调用,所以应该是sui[this.index]
或者你把最外层的for的var改为let也行,这个写tab选项卡、轮播的控件的时候你都会用得到。
最后你的问题,this是什么?
但我不会告诉你为w什么。
典型的闭包问题,想深入理解的话自己多看书吧。
最简单的解决方法是把for循环中的var换成let
可以利用自定义属性保存正确的a值,或者利用闭包来保存。