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

 我来答
miniappcy3tv95eaedrf
推荐于2016-10-21 · TA获得超过2363个赞
知道大有可为答主
回答量:1909
采纳率:92%
帮助的人:1116万
展开全部

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

事件监听只能获取到触发事件的元素,可以在这个元素上放些数据,当然也可以把函数名放进去再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>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式