javascript 用addEventListener监听时,如何向触发的函数传递函数?

如题所述

你还是把具体需求描述一下,感觉你这个思路考虑得不对。

事件监听只能获取到触发事件的元素,可以在这个元素上放些数据,当然也可以把函数名放进去再eval,或者把函数名挂到一个对象上,用对对象方法访问(不用eval)

下面是示例

<!DOCTYPE html>
<html>
<head>
<title>js测试</title>
</head>
<body>
<script type="text/javascript">
function test1(src){
alert(src+':这里调用到了test1');
}
function test2(src){
alert(src+':这里调用到了test2');
}

function eventHandler(e){
var func=this.getAttribute("data-func");

//eval方法
eval(func+"('eval中调用')");

//属性方法,全局函数是挂在window下的
window[func]("按window方法调用");
}

window.onload=function(){
//没有用addEventListener,因为还要考虑到旧版IE的兼容,只用了onclick
//实际中最好考虑用库(jQuery等)更方便绑定
document.getElementById('btn1').onclick=eventHandler;
document.getElementById('btn2').onclick=eventHandler;
}
</script>
<p>下面这两个在js中动态绑定,而且绑定的是同一个函数</p>
<a href="javascript:" id="btn1" data-func="test1">按钮一</a>
<a href="javascript:" id="btn2" data-func="test2">按钮二</a>

<p>下面这两个用内联事件,实际上两个绑定生成了不同的函数</p>
<a href="javascript:" onclick="test1('内联三')">按钮三</a>
<a href="javascript:" onclick="test2('内联四')">按钮四</a>
</body>
</html>

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答