javascript - 新创建的按钮(通过 createElement ("Button"))激活自身。如何阻止它?

标签 javascript html

hmtl 文件中我有一个简单的按钮

<body>
    <button type="button" onclick="create_button()">Create button</button>
</body>

js 文件中我有两个函数

function create_button() {
    var new_button = document.createElement("Button");
    new_button.innerHTML = "Pop the alert";
    new_button.type = "button";
    new_button.onClick = my_function();
    document.body.appendChild(new_button);
};
function my_function() {
    alert("Not so fast");
};

显然它应该按以下方式工作:

  • 点击创建按钮 -> 弹出警报按钮出现
  • 点击弹出警报 -> “不太快”警报应用程序

但是,在我点击创建按钮 后,出现警告。我猜 Pop an alert 按钮会激活它自己,但我不知道如何阻止它这样做。


编辑。我实际上有一个问题,其中 my_function 取决于某些参数。 所以假设我们有以下情况:

function my_function(x) {
    alert("I like " + x);
};

我想创建执行 my_function("Stack Overflow") 的按钮。

基于此SO我用的讨论

new_button.addEventListener('click', function(){my_function("Stack Overflow");});

而且有效。

最佳答案

您可以使用 new_button.addEventListener('click',my_function);
因此 my_function 将被引用,但不会被称为 imidiatley:

function create_button() {
  var new_button = document.createElement("Button");
  new_button.innerHTML = "Pop the alert";
  new_button.type = "button";
  new_button.addEventListener('click', my_function);
  document.body.appendChild(new_button);
};

function my_function() {
  alert("Not so fast");
};
<button type="button" onclick="create_button()">Create button</button>

修改后

如果你的my_function参数,你必须把它包装成匿名函数,所以它会是:

new_button.addEventListener('click',function(){
 my_function(5);
});

或者

new_button.onclick=function(){
           my_function(5);};

关于javascript - 新创建的按钮(通过 createElement ("Button"))激活自身。如何阻止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36632088/

相关文章:

javascript - Nunjucks:在 for 循环中从数组中选择特定项目

复杂数组的 Javascript 循环与 C 循环

javascript - div 内的按钮,不发送 div onclick - JavaScript

javascript - 如何使脚本加载和 es6 模块加载一起工作?

javascript - 如何使用 azure 搜索 javascript sdk 设置 Appinsights

JavaScript 检测/浏览器统计

javascript - 如何为 jQuery ListView 中的特定链接创建单击事件。

jquery - 液体布局左液体 + 固定右列

javascript - 下拉菜单在导航栏内不起作用,但在外部有效

jquery - 用另一个 div 替换一个 div - jquery