第九章練習題
第九章練習
第九章練習題感覺好難自己一點思路都沒有,看了大神寫的代碼有好幾個地方不太懂求大神幫忙解釋。
window.onload = function(){
? ? ? ? ? ? ? ? ? ?
? ? ?// 鼠標移動改變背景,可以通過給每行綁定鼠標移上事件和鼠標移除事件來改變所在行背景色。
? ? ? ? ? var tr=document.getElementsByTagName("tr");
? ? ? ? ? for(var i= 0;i<tr.length;i++)
? ? ? ? ? {
? ? ? ? ? ? ? bgcChange(tr[i]);
? ? ? ? ? }
? ? ?}
? ? ? function bgcChange(obj)
? ? ?{
? ? ? ? obj.onmouseover=function(){
? ? ? ? ? ? obj.style.backgroundColor="#f2f2f2";
? ? ? ? }
? ? ? ? obj.onmouseout=function(){
? ? ? ? ? ? obj.style.backgroundColor="#fff";
? ? ? ? }
? ? ?}
這是大神寫的一段代碼。這里的obj是不是形參?如果是該如何理解obj與tr【i】的關系?為什么把obj改成t【i】后就不行了?還有代碼里面是先調用bgcchange()函數(shù),然后在定義函數(shù),這樣為什么也可以?
2016-04-26
前面一個for循環(huán)就是遍歷,執(zhí)行已經(jīng)封裝好了的bgcChange()這個函數(shù),obj就是形參,換成什么代碼多行(除了已經(jīng)定義的變量,比如tr[i]),這里面的tr[i]就是實參。你要想把obj換成tr[i],就要把封裝的函數(shù)內容放在循環(huán)里面,就像這樣:
? ? ? ? ? var tr=document.getElementsByTagName("tr");
? ? ? ? ? for(var i= 0;i<tr.length;i++)
? ? ? ? ? {
? ? ? ? ? ? ? ? ? tr[i].onmouseover=function(){
? ? ? ? ? ? tr[i].style.backgroundColor="#f2f2f2";
? ? ? ? }
? ? ? ? ty[i].onmouseout=function(){
? ? ? ? ? ? tr[i].style.backgroundColor="#fff";
? ? ? ? }
? ? ? ?}
不知道我說明白了沒有、
2016-05-03
謝謝你的講解。你這個關于this的用法我看了有7、8個講解,可是還是不是很清楚。
2016-05-03
要想把obj換成tr[i]應該是這樣的,不知道前面那個答案你去測試過沒有~
window.onload = function(){
????????? var tr=document.getElementsByTagName("tr");
????????? for(var i= 0;i<tr.length;i++)
????????? {
????????????? tr[i].onmouseover=function color1(){this.style.backgroundColor="#f2f2f2";}
??????????????? tr[i].onmouseout=function color2(){this.style.backgroundColor="#fff";}
??????? }
2016-04-26
前面幾個問題解答的挺全面了,我就給你解釋最后一個:“還有代碼里面是先調用bgcchange()函數(shù),然后在定義函數(shù),這樣為什么也可以?”程序線程執(zhí)行時一步一步來的并不是從上往下的順序,當程序執(zhí)行到函數(shù)bgchange()時,就會開始函數(shù)的解析(去執(zhí)行函數(shù)體)完事以后又回來繼續(xù)往下執(zhí)行。希望你能看懂