為什么要用this.style不直接用tr[i].style呢?
function?changeColor(){ ?????????var?tbody=document.getElementById("table").lastChild; ?????????var?tr=tbody.getElementsByTagName('tr'); ?????????var?len=tr.length; ?????????for(var?i=0;i<len;i++){ ?????????????tr[i].onmouseover?=?function(){ ??????????????alert(this); ?????????????????this.style.backgroundColor="#f2f2f2"; ?????????????} ?????????????tr[i].onmouseout?=?function(){this.style.backgroundColor="#fff"; ???????????} ?????????} ?????}
在上面的代碼中為什么不能寫tr[i].style,有點理解不了了
2016-06-02
我也有疑問,還有一點不懂,這段函數是要預編譯么?為什么for()循環的i會是最后的len值,正常的for()循環是不是也是這樣的?
2016-05-25
我又翻了下書,然后我的理解是function(){
? ? ? ? ? ? ? alert(this);
? ? ? ? ? ? ? ? ?this.style.backgroundColor="#f2f2f2";
? ? ? ? ? ? ?}是一個函數閉包,此時在這個函數里面調用i應該是最后的一個值即是len也就是3,而tr[i]就是tr[len],相當于個tr這個數組新增加了一項默認值為undefined.在這里function(){this.style.backgroundColor="#fff";
? ? ? ? ? ?}是作為tr[i]這個對象的onmouseout屬性的值,也就是給tr[i]這個對象添加了一個方法。當函數被作為某個對象的方法調用時,this等于那個對象。
2016-05-24
因為那個地方是添加事件,那個事件函數并沒有執行,點擊執行的時候函數體就只有this這個變量,沒定義tr[i];