【发布时间】:2016-11-16 15:26:10
【问题描述】:
我有一个向页面添加按钮的功能。
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)
【问题讨论】:
-
切勿使用
innerHTML插入内容。而且你的代码是错误的,一开始不可能“它工作正常”。 -
你能为这个问题创造一个小提琴吗?
-
@Oriol 这会影响它吗?
-
@PrashantPalikhe 好的。
-
看看使用
addEventListener而不是设置onclick。
标签: javascript html onclick nodelist