你说的是从form元素切换的时候...会自动检查数据..那样blur就触发window.onblur是吧....
我估计你是不是这样写的:
这样传递this确实会传进去..但是这里不可以在函数里再次使用this..否则..this就会指向window...这个有点特殊要涉及到JS的上下文对象的问题..我记得有一次也有个人问这个问题的...
当this在script标签中出现的时候..它就会出现这个上下文对象的问题...这个时候的this总是指向包围它的那个对象...比如...
利用加载后触发事件:
window.onload=function(){
document.getElementById("name").onblur=function(){
if(this.value==""){
this.focus();
this.className="highlight";
}
}
}
这个时候..当窗口加载完成后..它执行..查找ID为XX的元素...然后当这个元素blur的时候..这个时候..利用匿名函数..this就会指向ID的这个元素...
也就是说...当想让this指向一个元素的时候...这个对象必须包围this..产生上下文对象..否则..this总是指向window...
如..
此时this就指向window...
这个代码这样写也是可以的..
window.onload=function(){
document.getElementById("name").onblur=checkform;
}
function checkform(){
if(this.value==""){
this.focus();
this.className="highlight";
}
}
这样..this还是指向id的元素...
象你利用this传递值后....必须指定另一个形参来接受它这个值..因为function它是在全局状态下定义的...function此时就是window的一个方法而已...
比如这样写..