gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:50:52 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com