這兩段代碼不一樣嗎?為什么第一段不能運行第二段卻可以?
第一段:
?window.onload = function(){
? ? ?// 鼠標移動改變背景,可以通過給每行綁定鼠標移上事件和鼠標移除事件來改變所在行背景色。
? ? ? ? ?var z = document.getElementsByTagName("tr");
? ? ? ? ?for(var i=1;i<z.length;i++){
? ? ? ? ? z[i].onmouseover = function(){? z[i].style.backgroundColor = "red"; }
? ? ? ? ? z[i].onmouseout = function(){? z[i].style.backgroundColor="#fff";? }
? ? ? ? ?}
? ? ? }
第二段:
window.onload = function(){
? ? ?// 鼠標移動改變背景,可以通過給每行綁定鼠標移上事件和鼠標移除事件來改變所在行背景色。
var z=document.getElementsByTagName("tr");
? ? ? ? for(var i=1;i<z.length;i++){ ab(z[i]); }
function ab(n){
? ? ? ? ? ? n.onmouseover=function(){n.style.backgroundColor="red";}
? ? ? ? ? ? n.onmouseout=function(){ n.style.backgroundColor="#fff"; }
? ? ? ?}
}
2018-07-04
var z = document.getElementsByTagName("tr");
? ? ? ? ?for(var i=1;i<z.length;i++){
? ? ? ? ? z[i].onmouseover = function(){ ?this.style.backgroundColor = "red"; }
? ? ? ? ? z[i].onmouseout = function(){? this.style.backgroundColor="#fff";? }
? ? ? ? ?}
將第一段代碼改為上面這樣就可以了。主要是TR對象z[i]作用域的問題,你的TR對象z[i]的作用域僅限于FOR循環(huán)體內(nèi),在回調(diào)函數(shù)function中TR對象z[i]將會丟失,因此無法對它綁定鼠標移上事件和鼠標移開事件,導(dǎo)致未出現(xiàn)變色效果。不知道這樣解釋你能否懂,如果還有疑惑,建議去翻譯作用域的相關(guān)資料。
2018-07-03
因為第一個事件是在循環(huán)里邊 ? 而第二個是在循環(huán)外 ? ? 所第二個事件沒有為每一行都添加上