window.onload = function(){
// 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
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="#f2f2f2";
}
}
}
alltr[i].onmouseover=function(){ this.style.backgroundColor = "#f2f2f2";}
与alltr[i].onmouseover=function(){ alltr[i].style.backgroundColor = "#f2f2f2";}:
后者无法改变颜色的原因在于,鼠标事件为触发事件,也就是说,是给每行添加一个触发事件,但是触发后执行的内容,是触发对象this颜色改变。
先循环,添加事件后,此时i=3, 再发生触发,运行触发函数中内容,alltr[i]中的i为3,而不是触发对象。
因为按照你写的 添加这个事件以后他会按照最后的结果也就是tr[i]去执行,这个i不会变成固定值,而是依然动态的,而FOR结束以后I肯定是3,所以所有的方法里都会变成tr[3],但是3里根本没有元素,所以控制台报错,也没有效果。
先不说你代码对不对,你这两个颜色设置的一样,怎么看效果呢?