關于用 lis 和用 as 的區別?
//?滑過滑過、離開、點擊每個選項時 ??????//?執行腳本 ??????for(var?i=0;i<lis.length;i++){ ??????????lis[i].onmouseover=function(){ ??????????????this.style.background='#CCC'; ??????????} ??????????lis[i].onmouseout=function(){ ??????????????this.style.background='#FFF'; ??????????} ??????????lis[i].onclick=function(event){ ??????????????menu.style.display='none'; ??????????????title.innerHTML=this.innerHTML; ??????????} ??????}
用 lis 如上執行出來的是藍色連接樣式如圖
問題1:其中lis[i].onclick=function(event){
??????????????menu.style.display='none';
??????????????title.innerHTML=this.innerHTML;
??????????}部分的 this 換成lis[i] 就不行了,為什么?
問題2:改用參考答案as[i]來執行如下:
//?滑過滑過、離開、點擊每個選項時 ??????//?執行腳本 ??????for(var?i=0;i<as.length;i++){ ??????????as[i].onmouseover=function(){ ??????????????this.style.background='#CCC'; ??????????} ??????????as[i].onmouseout=function(){ ??????????????this.style.background='#FFF'; ??????????} ??????????as[i].onclick=function(event){ ??????????????menu.style.display='none'; ??????????????title.innerHTML=this.innerHTML; ??????????} ??????}
執行效果:
相比用 lis 的效果,為什么會有這樣的差異呢?
2016-05-31
樓上說的對lis包含a標簽
當你用as[i].onclick=function(){}時 as[i]還不是個對象(java里叫類),就沒有屬性,你可以看下瀏覽器的開發者工具控制臺
顯示的應該是undifend,如果有java或面向對象的基礎就比較好理解了。
2016-05-31
只能告訴你樣式的不同,lis[i].innerHTML中包含a標簽,所以會出現上面那種情況,至于this為什么不能用對象直接替代,我找了好多資料也沒有理解,只是說不能用這種方式創建function,不懂