慕田峪4524236
2018-10-11 14:15:14
.為什么將以下代碼中this,用sui[a]替換時,運行不出效果;.代碼如下<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Title</title> <style> .car{ background: #1dacbe; } </style></head><body><button>按鈕</button><button>按鈕</button><button>按鈕</button><button>按鈕</button><button>按鈕</button></body></html><script>var sui=document.getElementsByTagName("button");for(var a=0;a<sui.length;a++){ sui[a].onclick=function () { for(var b=0;b<sui.length;b++){ sui[b].className="" } this.className="car" }}</script>
1 回答
慕俠2389804
TA貢獻1719條經驗 獲得超6個贊
寫個詳細一點的- -
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');
}添加回答
舉報
0/150
提交
取消
