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