I have a function for adding buttons to a page.
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++;
}
It basically creates a button into the html based off some data.
Every time I add a button, I would like it to be added to the start of div #mydiv
, and since newbutton is also not an Element
, but a String
, I have to modify the innerHtml to add it to the start of #mydiv
.
Afterwards, I must get the element (to add an onclick), by getting the first child of #mydiv
.
However, after adding a second button to my page, the first button onclick no longer works.
If I modify my code to only add one button, everything works fine.
So now, only the top button (the latest added button), can be clicked.
How can I fix this?
I've also tried to use element.firstChild
instead of element.children[0]
.
Thanks in advance everyone!
EDIT:
Here is a jsfiddle: ( as you can see the only button that works is stackoverflow
)
innerHTML
to insert contents. And your code is wrong, there is no way "it works fine" at the beginning. – AndeanaddEventListener
instead of settingonclick
. – KellogginnerHTML
is reparsed. – Andean