【问题标题】:"OnClick" events created through JavaScript are triggering immediately, not when the object is clicked通过 JavaScript 创建的“OnClick”事件会立即触发,而不是在单击对象时触发
【发布时间】:2014-08-25 17:15:42
【问题描述】:

好的。我们都知道我们可以这样做:

<input type="button" value="Create Button" onclick="addB()"/>
<p id="demo"/>
<script>
function addB() {
var object1 = document.createElement("input");
object1.type="button";
object1.value="Example of value";
document.getElementById("demo").appendChild(object1);
}
</script>

让我们再做一次,但稍作修改。现在我们将添加另一个函数并赋予它另一个属性。

<input type="button" value="Create Button" onclick="addB()"/>
<p id="demo"/>
<script>
function addB() {
var object1 = document.createElement("input");
object1.type="button";
object1.value="Example of value";
object1.onclick=myFunction();
document.getElementById("demo").appendChild(object1);
}

function myFunction() {
alert("You have clicked me.");
}
</script>

如果您花时间阅读代码,那么它应该为该按钮分配一个 onclick 属性,以便当您单击生成的按钮时,它将触发一个名为“myFunction”的函数。但它不会那样做。它立即调用该函数。

有谁知道为什么会发生这种情况或我做错了什么?我很想得到一些帮助。非常感谢您的支持。

【问题讨论】:

  • 伙计,少写点水,没人会读那么久的帖子。
  • 好的,我会缩短它。感谢您的提示:)

标签: javascript buttonclick


【解决方案1】:

您正在调用MyFunction,而不是将其指定为事件处理程序,因为您包含了括号。将行改为

object1.onclick=myFunction;

【讨论】:

  • 感谢您将我从这样的“duh”时刻中拯救出来。
【解决方案2】:

您不应该在分配为属性时调用该函数。

更改以下行

object1.onclick=myFunction();

object1.onclick=myFunction;

它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多