好奇怪的函數(shù)調(diào)用問題,求解答,謝謝
下面兩種實現(xiàn)選中變色的方式,為什么只有第一種有效果,而第二種方法沒有任何效果,求解答
window.onload?=?function(){ ?????????????????? ?????//?鼠標移動改變背景,可以通過給每行綁定鼠標移上事件和鼠標移除事件來改變所在行背景色。 ????????????var?trs?=?document.getElementsByTagName("tr"); ????????????for(var?i=1;i<trs.length;i++) ????????????{ ????????????????changeColor(trs[i]); ????????????} ???????} ???????????? function?changeColor(obj){ ???? ????obj.onmouseover?=?function(){ ????????????????obj.style.backgroundColor="?#f2f2f2"; ????????????} ????????????obj.onmouseout?=?function(){ ????????????????obj.style.backgroundColor="?#fff"; ????????????} }
window.onload?=?function(){ ??????????var?trs=document.getElementsByTagName("tr"); ??????????for(var?i=?0;i<trs.length;i++) ??????????{ ??????????????trs[i].onmouseover=function(){ ??????????????trs[i].style.backgroundColor="#f2f2f2"; ??????????????} ??????????????trs[i].onmouseout=function(){ ??????????????trs[i]style.backgroundColor="#fff"; ??????????????} ??????????} ????????}
2016-03-02
第一種方法是在根據(jù)標簽名循環(huán)的時候為每一個tr綁定了一個changeColor方法,參數(shù)就是下標,第二種單純的循環(huán)無法綁定相應(yīng)的方法,無法使用正確的參數(shù)去執(zhí)行下邊的代碼,所以會報錯導(dǎo)致不起作用。
2016-03-27
方法一中,obj是形參,在整個方法內(nèi)都有效,它的值通過7行的實參trs[i]傳遞了。
實參trs[i]是第i個tr節(jié)點的引用,通過這個引用當然可以修改它的值。
方法二中,5行和6行的trs[i]的區(qū)別,
5行的trs[i],代表的是第 i 個tr節(jié)點,
6行的trs[i],首先他不是1-12行這個匿名方法的形參、局部變量,
而是屬于5-7行定義的匿名方法的一個沒有聲明定義的東西。。
就是什么都不是的意思。就不用說用它來修改什么屬性了。。。
可以通過將6行的trs[i]改為this,this表示當前調(diào)用5-7行這個匿名方法的對象,即是6行的trs[i]。
8、9行和5、6行同理
是這樣嗎?不是請告訴我哦,打字辛苦。
2016-03-07
你的第二種方法的for循環(huán)的i的初始條件是0,而trs[0]是空白節(jié)點,所以會出錯;
但是你的第一張方法的i的初始條件是1,所以沒有出錯
2016-03-04
能不能再說具體點,還是不太理解
2016-03-02
看看 一起學習