為什么將this改成lis[i]就運行不出呢,this指代的不就是lis[i]嗎?
for(var i=0,l=lis.length;i<l;i++){
? ? ? lis[i].onmouseover=function(){
? ? ? this.style.background='#567';
? ? ? }
? ? ? lis[i].onmouseout=function(){
? ? ? this.style.background='#FFF';
? ? ? }
? ? ? lis[i].onclick=function(e){
? ? ? e = e || window.event;
? ? ? if(e.stopPropagation){
? ? ? ? ? e.stopPropagation();
? ? ? }else{
? ? ? ? ? e.cancelBubble=true;
? ? ? }
? ? ? var id=this.id;
? ? ? stateList.style.display='none';
? ? ? ? stateTxt.innerHTML=getByClass('stateSelect_text',id)[0].innerHTML;
? ? ? ? loginStateShow.className='';
? ? ? ? loginStateShow.className='login-state-show '+id;
? ? ? }
? ?}
將上面加粗的this都改成lis[i]為什么不能運行,this指代的不就是lis[i]嗎?
2017-08-31
你打印出i的值就知道為什么了。這和它運行的順序有關(guān),它是先做了循環(huán)綁定,當(dāng)你觸發(fā)事件后才會再去執(zhí)行
2016-12-15
遇到了一個類似的問題, 現(xiàn)在搞清楚了
問題在于 i 的生命周期
當(dāng)前在循環(huán)中, i 被定義并使用?
在事件觸發(fā)時 i 已經(jīng)被回收, 瀏覽器就找不到lis[i], 所以報錯
用 this 的話就不會?
不知道將清楚沒?
2016-12-15
因為this指代的是當(dāng)前項