日期:2014-05-16  浏览次数:20402 次

JavaScript怎么给onfocus这样的内部事件传递参数
HTML代码里可以写
<input type="text" onfocus='onFocus(this);'>

如果动态的用JavaScript怎么传这样的类似this的参数.

var text_box = document.getElementById("box");
text_box.onfocus = onFocus;//这里有没有什么办法把this之类的参数让它响应的时候, 自动处理.

------解决方案--------------------
如果你直接写在window下面,参数可以用全局变量
var a = 1 , b= 2;
window.onload = function(){
var text_box = document.getElementById("box");
text_box.onfocus = function(){

return a+b;

};
}

如果你定义在类里面

function A(arg0 , arg1){
this.a = arg0;
this.b = arg1;
}
A.prototype.fnOnFocus = function(){
var me = this;
return me.a+me.b;
}
------解决方案--------------------
js的事件都有一个隐含参数arguments,可以使用调试模式查看参数的具体信息
var oT = function()
{
var oEvent = arguments[0]; //事件
var oTarget = oEvent.srcElement || oEvent.target ; //获取发生事件的目标(IE为srcElement ,火狐是target)
oTarget.style.color='red'; //事件目标字体变红色
}

------解决方案--------------------
text_box.onfocus = onFocus;//这里有没有什么办法把this之类的参数让它响应的时候, 自动处理.

谁调用了onfocus,this就代表调用对象的引用.
监听事件默认的第一个参数是event对象,可以用arguments[0]取到
------解决方案--------------------
<input type="text" value="1">
<input type="text" value="2">
<input type="text" value="3">
<script type="text/javascript">
var input=document.getElementsByTagName("input");
for(var i=0;i<input.length;i++){
input[i].onfocus=function(){
alert(this.value);
}
}
</script>
------解决方案--------------------
我上面写的例子可能有不合时宜的地方 但是原理是可以的 你可以适当的改一下
------解决方案--------------------
text_box.onfocus = function(e){

//e:表示事件参数 事件参数里面可以拿到触发事件的对象
};