I was making a script that creates div elements each time a button is pressed. Originally I had the function called inline with the onclick
attribute, but jslint doesn't like that so I moved it out and instead tried to use addEventListener("click",function());
I've never used addEventListener()
before so I'm not even sure I am using it correctly.
The problem is that it creates one div
when the page loads and won't do anything when the button is pressed.
Thank you in advance.
here is what I have:
<body>
<form>
<textarea id="a"></textarea>
<br>
<input value="button" type="button">
</form>
<div id="content">
</div>
<script>
/*jslint browser:true */
function createEntry(text) {
"use strict";
var div = document.createElement("div");
div.setAttribute("class", "test");
document.getElementById("content").appendChild(div);
}
var input = document.getElementsByTagName("input")[0];
input.addEventListener("click", createEntry(document.getElementById('a').value));
</script>
Change the event listener like this
input.addEventListener("click", function(){
createEntry(document.getElementById('a').value);
});
as it stands, you're passing the result of createEntry
as an event listener, not the function itself
More information here:
https://developer.mozilla.org/en/docs/DOM/element.addEventListener
Change this line
input.addEventListener("click", createEntry(document.getElementById('a').value));
into
input.addEventListener("click", function(){
createEntry(document.getElementById('a').value);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With