在 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/