首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将参数传递给JavaScript中的匿名函数?

如何将参数传递给JavaScript中的匿名函数?
EN

Stack Overflow用户
提问于 2008-10-22 08:12:51
回答 9查看 133.3K关注 0票数 86

我正在尝试弄清楚如何在JavaScript中将参数传递给匿名函数。

看看这段示例代码,我想你会明白我的意思:

<input type="button" value="Click me" id="myButton" />

<script type="text/javascript">
    var myButton = document.getElementById("myButton");
    var myMessage = "it's working";
    myButton.onclick = function(myMessage) { alert(myMessage); };
</script>

单击按钮时,应出现消息:it's working。但是,匿名函数中的myMessage变量为空。

jQuery使用了很多匿名函数,传递该参数的最佳方式是什么?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-10-22 08:17:20

您的特定情况可以简单地更正为正常工作:

<script type="text/javascript">
  var myButton = document.getElementById("myButton");
  var myMessage = "it's working";
  myButton.onclick = function() { alert(myMessage); };
</script>

这个例子是可行的,因为创建的匿名函数作为元素的处理程序可以访问在创建它的上下文中定义的变量。

对于记录,处理程序(通过设置onxxx属性指定)期望单个参数接受由DOM传递的事件对象,并且您不能在其中强制传递其他参数

票数 74
EN

Stack Overflow用户

发布于 2008-10-22 08:18:22

您所做的不起作用,因为您正在将一个事件绑定到一个函数。因此,它是定义当事件被引发时将被调用的参数的事件(即JavaScript不知道你绑定到onclick的函数中的参数,所以不能向它传递任何东西)。

但是,您可以这样做:

<input type="button" value="Click me" id="myButton"/>

<script type="text/javascript">

    var myButton = document.getElementById("myButton");

    var myMessage = "it's working";

    var myDelegate = function(message) {
        alert(message);
    }

    myButton.onclick = function() { 
        myDelegate(myMessage);
    };

</script>
票数 27
EN

Stack Overflow用户

发布于 2010-10-17 01:40:59

下面是使用闭包解决您提到的问题的一种方法。它还考虑了这样一个事实,即可以在不影响绑定的情况下随时间改变消息。而且它使用了jQuery以使其简洁。

var msg = (function(message){
  var _message = message;
  return {
    say:function(){alert(_message)},
    change:function(message){_message = message}
  };
})("My Message");
$("#myButton").click(msg.say);
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/224820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档