当前位置: 代码迷 >> Java Web开发 >> 新手js 中定义事件的function 为什么不用this就出错了
  详细解决方案

新手js 中定义事件的function 为什么不用this就出错了

热度:60   发布时间:2016-04-13 22:32:32.0
新手求教:js 中定义事件的function 为什么不用this就出错了
function trcolor(){
var tab = document.getElementsByTagName("table")[0];
var rows = tab.rows;
var name;
for(var i=0;i<rows.length;i++){
if(i%2==0){
rows[i].className = 'one';
}
rows[i].onmouseover = function(){
name = this.className;
this.className = 'on';
}
rows[i].onmouseout = function(){
this.className = name;
}
}
}
这样就是对的,但是我写成
rows[i].onmouseover = function(){
name = rows[i].className;
rows[i].className = 'on'; }
就出错了?请问这是为什么?
------解决思路----------------------
this代表引用该方法的对象,在这个事件方法体中,它是不认识row的,js中变量没有块作用域的,只是按照不同等级的函数链域,只有有关联的下级函数域中才能调用上级函数域中的变量和方法
------解决思路----------------------
rows[i] 是属于trcolor的变量

rows[i].onmouseover = function(){
}
这是属于row[i]的方法,这是另外一个方法了,她不识别rows[i]的  ,使用this,就代表有onmouseover这个事件的控件
  相关解决方案