為什么for循環(huán)中直接使用tr[i]不可以,而將onmouseover等包含到一個(gè)函數(shù)中調(diào)用就可以了?(詳情見(jiàn)下面代碼)
方式1(無(wú)法實(shí)現(xiàn)好的效果):
window.onload = function(){
???? // 鼠標(biāo)移動(dòng)改變背景,可以通過(guò)給每行綁定鼠標(biāo)移上事件和鼠標(biāo)移除事件來(lái)改變所在行背景色。
??????? var tr = document.getElementsByTagName("tr");
??????? for(var i = 0; i < tr.length; i++)
??????? {
???????????tr[i].onmouseover=function()
??????????? {
??????????????? tr[i].style.backgroundColor = "#f2f2f2";
??????????? }
??????????? tr[i].onmouseout=function()
??????????? {
??????????????? tr[i].style.backgroundColor = "#fff";
??????????? }??????
??? ?? }
}
方法二(可以實(shí)現(xiàn)):
window.onload = function(){
???????????????? ?
???? // 鼠標(biāo)移動(dòng)改變背景,可以通過(guò)給每行綁定鼠標(biāo)移上事件和鼠標(biāo)移除事件來(lái)改變所在行背景色。
?? ? var tr = document.getElementsByTagName("tr");
?? ? for(var i = 0; i < tr.length; i++)
?? ? {
?? ? ch(tr[i]);
?? ? }
?? ??? ?
???? function ch(obj)
???? {
????????? obj.onmouseover=function()
??????????? {
??????????????? obj.style.backgroundColor = "#f2f2f2";
??????????? }
??????????? obj.onmouseout=function()
??????????? {
??????????????? obj.style.backgroundColor = "#fff";
??????????? }
???? }
}
2015-09-16
這是由于事件的異步執(zhí)行造成的。方法一中給每個(gè)tr都綁定了onmouseover和onmouseout事件,頁(yè)面加載完成后,for循環(huán)中的i已經(jīng)變?yōu)榱藅r.length。而事件此時(shí)還沒(méi)有被觸發(fā),當(dāng)用戶(hù)移動(dòng)鼠標(biāo)觸發(fā)事件時(shí),事件函數(shù)中的代碼? tr[i].style.backgroundColor = "#f2f2f2";開(kāi)始執(zhí)行,而這時(shí)i的值已經(jīng)是tr.length了,tr[i]即tr[tr.length],可tr中最后一個(gè)是tr[tr.length-1],而tr[tr.length]這個(gè)節(jié)點(diǎn)是不存在的。
2016-03-19
為什么i=3的時(shí)候循環(huán)不成立,還執(zhí)行下面的代碼?
2015-10-28
像參考答案里用this指向當(dāng)前對(duì)象就行了,你那個(gè)obj也是同樣道理
2015-09-14
你在第一個(gè)里面for循環(huán)里面alert(tr[i]),會(huì)返回[object HTMLTableRowElement],HTMLTableRowElement是一個(gè)接口,這個(gè)我也不清楚,反正他不是一個(gè)正常的對(duì)象,你還可以用另一種方式驗(yàn)證他的類(lèi)型,就是你在alert(arr[2] instanceof Object),會(huì)返回false,說(shuō)明他并不是一個(gè)Object,所以第一個(gè)會(huì)調(diào)用失敗。
第二個(gè)function里面你把tr[i]當(dāng)做參數(shù)傳入,參數(shù)的類(lèi)型是any,也就是說(shuō)他可以是任意的類(lèi)型,使用的時(shí)候當(dāng)做Object使用,在這過(guò)程中參數(shù)類(lèi)型發(fā)生了變化