我有一个功能,用于向页面添加按钮。元素innerHTML摆脱事件监听器
var count = 0;
function createOnclickFunction(number)
{
return function()
{
alert("This is button number " + number);
}
}
function addButton(data)
{
var newbutton = "..." //creates string from data
var element = document.getElementById("mydiv");
var children = element.children;
element.innerHTML = newbutton + element.innerHTML;
var currentCount = count;
children[0].onclick = createOnclickFunction(currentCount)
count++;
}
它基本上创建一个按钮到基于一些数据的HTML。
我每次添加一个按钮,我想它被添加到DIV #mydiv
的开始,因为newbutton也不是一个Element
,但String
,我要修改的innerHTML将其添加到启动的#mydiv
。
之后,我必须通过获取#mydiv
的第一个子元素来获取元素(添加一个onclick)。
但是,在向我的页面添加第二个按钮后,第一个onclick按钮不再有效。
如果我修改我的代码只添加一个按钮,一切工作正常。
所以现在只有最上面的按钮(最新添加的按钮)可以被点击。
我该如何解决这个问题?
我也试过用element.firstChild
而不是element.children[0]
。
在此先感谢大家!
编辑:
这里是一个的jsfiddle:(正如你所看到的作品是stackoverflow
唯一的按钮)
https://jsfiddle.net/7c7gtL26/
切勿使用'innerHTML'插入内容。而你的代码是错误的,在开始时没有办法“它工作正常”。 – Oriol
你可以为这个问题创建一个小提琴吗? – Prashant
@Oriol虽然这会影响吗? –