Javascript 是否将onclick事件添加到动态添加的按钮?

Javascript 是否将onclick事件添加到动态添加的按钮?,javascript,html,forms,Javascript,Html,Forms,我正在html中动态添加一个按钮,如下所示: 单击该按钮后,我想调用一个Javascript函数: var but = document.createElement("button"); but.value="delete row"; but.setAttribute("onclick","callJavascriptFunction()"); //this is not working but.onclick="callJavascriptFunction()" //this is al

我正在html中动态添加一个按钮,如下所示: 单击该按钮后,我想调用一个Javascript函数:

var but = document.createElement("button");

but.value="delete row";

but.setAttribute("onclick","callJavascriptFunction()");
//this is not working

but.onclick="callJavascriptFunction()"
//this is also not working

document.getElementById("but").onclick="callJavascriptFunction()"
//this is also not working

but.id="but"+inc;
有什么办法解决这个问题吗?请帮帮我。, 提前感谢

从不起作用的表达式中删除(),将获得所需的结果

but.setAttribute("onclick",callJavascriptFunction);
but.onclick= callJavascriptFunction;
document.getElementById("but").onclick=callJavascriptFunction;
没有双引号,没有括号。

试试这个:

but.onclick = callJavascriptFunction;
或者使用另一个元素包装按钮并使用innerHTML创建按钮:

var span = document.createElement('span');
span.innerHTML = '<button id="but' + inc +'" onclick="callJavascriptFunction()" />';
var span=document.createElement('span');
span.innerHTML='';
试试看
but.addEventListener('click',yourFunction)
请注意,函数名后面没有副词
()
。这是因为您正在分配函数,而不是调用它。

请尝试以下操作:

var inputTag = document.createElement("div");              
inputTag.innerHTML = "<input type = 'button' value = 'oooh' onClick = 'your_function_name()'>";    
document.body.appendChild(inputTag);
var inputTag=document.createElement(“div”);
inputTag.innerHTML=“”;
document.body.appendChild(inputTag);

这将在DIV中创建一个按钮,它可以完美地工作

我也遇到了类似的问题,但这些修复都不起作用。问题是我的按钮还不在页面上。解决这个问题的方法是这样的:

//Bad code.
var btn = document.createElement('button');
btn.onClick = function() {  console.log("hey");  }
为此:

//Working Code.  I don't like it, but it works. 
var btn = document.createElement('button');
var wrapper = document.createElement('div');
wrapper.appendChild(btn);

document.body.appendChild(wrapper);
var buttons = wrapper.getElementsByTagName("BUTTON");
buttons[0].onclick = function(){  console.log("hey");  }

我一点也不知道为什么会这样。将按钮添加到页面并以任何其他方式引用它都不起作用。

这段代码对我来说效果不错,看起来更简单。需要使用特定参数调用函数

var btn = document.createElement("BUTTON");  //<button> element
var t = document.createTextNode("MyButton"); // Create a text node
btn.appendChild(t);   

btn.onclick = function(){myFunction(myparameter)};  
document.getElementById("myView").appendChild(btn);//to show on myView
var btn=document.createElement(“按钮”);//要素
var t=document.createTextNode(“MyButton”);//创建一个文本节点
附肢儿童(t);
btn.onclick=function(){myFunction(myparameter)};
document.getElementById(“myView”).appendChild(btn)//在myView上显示

but.onclick=function(){yourjavascriptfunction();}


but.onclick=function(){functionwithparam(param);}

为什么还要在同时执行onclick时使用setAttribute?不是所有的浏览器都支持onclick吗?谢谢,这对我很有帮助!发送函数参数时,如何调用函数都德一切正常。。但是我不能通过浓缩字符串来给出ID:But和inc。。。请帮忙。。。。。。“但是'+inc+'”这不起作用try:span.firstChild.setAttribute(“但是”+inc”);在span.innerHTML之后,我还假设inc是一个变量,必须在使用它之前进行设置。让我知道它仍然不适用于您。如何向callJavascriptFunction()添加参数,如callJavascriptFunction(p1、p2、p3)它可以工作,但是如何!
btn.onclick=function_name()之间有什么区别
btn.onclick=function\u name
。如果需要参数怎么办?>内联事件的一个显著缺点是,与上述事件侦听器不同,您可能只分配了一个内联事件。内联事件存储为元素[doc]的属性/属性,这意味着它可以被覆盖。()我很久以前就提出了这个答案,现在不再推荐了。相反,使用
btn.addEventListener('click',函数(事件){do stuff})
var btn = document.createElement("BUTTON");  //<button> element
var t = document.createTextNode("MyButton"); // Create a text node
btn.appendChild(t);   

btn.onclick = function(){myFunction(myparameter)};  
document.getElementById("myView").appendChild(btn);//to show on myView