亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于JavaScript中“this”中的問題

關于JavaScript中“this”中的問題

慕田峪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');
            }


查看完整回答
反對 回復 2018-11-30
  • 1 回答
  • 0 關注
  • 443 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號