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

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

什么時候用this,為什么用ali[i].index就不行

?window.onload=function(){

? ? ? ? var oDiv=document.getElementById("tab-list");

? ? ? ? var aDiv=oDiv.getElementsByTagName("div");

? ? ? ? var oul1=document.getElementById("ul1");

? ? ? ? var ali=oul1.getElementsByTagName("li");

? ? ? ? for(var i=0;i<ali.length;i++){

? ? ? ? ? ? ali[i].index=i;

? ? ? ? ? ? ali[i].onmouseover=function(){

? ? ? ? ? ? ? ? for(i=0;i<ali.length;i++){

? ? ? ? ? ? ? ? ? ? ali[i].className="";

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? this.className="active";

? ? ? ? ? ? ? ? for(j=0;j<aDiv.length;j++){

? ? ? ? ? ? ? ? ? ? aDiv[j].className="hide";

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? aDiv[ali[i].index].className="show";

? ? ? ? ? ? }

? ? ? ? }

? ? ? ??

? ? }


正在回答

3 回答

這樣說吧,你遍歷完標簽過后給每個標簽添加一個事件,里面的this就是當前對象,你將下面的ali[i].index換成this.index或者直接用一個this都可以

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

我的理解:“? i “ 是變量,變量就涉及到作用域,作用域那么重要不用解釋了。

我想ali[i].onmouseover=function(){} 是一個新函數,若你把ali[i] 或ali[i].index (含有未知變量i 的對象)放在這個新函數內,自然會是lia[i]? is? undefined。。。外層函數的變量 ”i “ 對新函數來說沒有意義。除非你重新定義。


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

如果用了ali[i]那么再這個for循環中每一個ali集合的元素都會改變他的class,而你要的效果其實是只需要改變鼠標移動的這個標簽

這段的邏輯就是在這個for循環里先把集合內所有ali集合內li標簽的class改成空,這里要用ali[i],之后再改變鼠標點擊或者移動的對象,這就是單獨的對象,用的是this

ali[i].index代表的也不是一個單獨的對象

1 回復 有任何疑惑可以回復我~
#1

wagahai

下面的aDiv之所以用ali[i].index是因為這個函數是用在li標簽上的,對鼠標操作的反應也是在li上的,下面用這個方法的功能是為了讓div區域和li標簽一一對應,因為下面的div在body里也是有順序的
2016-10-24 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

什么時候用this,為什么用ali[i].index就不行

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

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

幫助反饋 APP下載

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

公眾號

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