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

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于this的問題

for(var n=0;n<li.length;n++){//這步是相對于未被點擊部分的樣式

? ? ? ? ? ? ? ? li[n].className = "";

? ? ? ? ? ? ? ? div[n].className = "hide";

? ? ? ? ? ? ?}

下面這兩段代碼放到for遍歷上面為什么出錯,div[this.index]里的this指向的是誰?

? ? ? ? ? ? this.className = "on";//再對點擊事件添加相應的屬性

? ? ? ? ? ? div[this.index].className = "";//通過之前的index編號綁定的指定div

?window.onload=function(){

? ? ? ? var tab = document.getElementById("tabs")

? ? ? ? var li = document.getElementsByTagName("li");

? ? ? ? var div = tab.getElementsByTagName("div");

? ? ? ? for(var i=0;i<li.length;i++){//獲取所有i編號的元素

? ? ? ? ? ? li[i].index = i; ?//定義一個index屬性對li進行編號

? ? ? ? ? ??

? ? ? ? ? ? li[i].onclick = function(){

? ? ? ? ? ? ? ??

? ? ? ? ? ? for(var n=0;n<li.length;n++){//這步是相對于未被點擊部分的樣式

? ? ? ? ? ? ? ? li[n].className = "";

? ? ? ? ? ? ? ? div[n].className = "hide";

? ? ? ? ? ? ?}

? ? ? ? ? ? this.className = "on";//再對點擊事件添加相應的屬性

? ? ? ? ? ? div[this.index].className = "";//通過之前的index編號綁定的指定div

? ? ? ? ? ? }

? ? ? ? }

? ? }


正在回答

3 回答

不難看出,onclick 是在循環中確認的,為了獲取這個循環中的數值,你需要用 index 來確認你所點擊的標簽的索引,如果你用 i 來作索引,那 i 的值只會為2。順帶一句?optionObject.index 是一種對象屬性。

0 回復 有任何疑惑可以回復我~

?? div[this.index].className = "";//通過之前的index編號綁定的指定div 這里的this呢?

0 回復 有任何疑惑可以回復我~

this指的就是這段代碼所在的那個節點。例如

上面通過li[i].onclick()來激活了for和this.className

那么this指的就是li[i]這個節點,當然,當i為不同數的時候this指得也不同。

所以這里用this可以靈活的選中li中的每一個元素來實現效果,而不是唯一的素數。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript進階篇
  • 參與學習       468836    人
  • 解答問題       22582    個

本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界

進入課程

關于this的問題

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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