9

我正在制作一个脚本,每次按下按钮时都会创建 div 元素。最初我有一个名为 inline 的函数onclick,但 jslint 不喜欢这样,所以我把它移了出来,而是尝试使用addEventListener("click",function());

我以前从未使用addEventListener()过,所以我什至不确定我是否正确使用它。

问题是它div在页面加载时创建一个,并且在按下按钮时不会做任何事情。

先感谢您。

这是我所拥有的:

<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>

4

3 回答 3

12

像这样更改事件侦听器

input.addEventListener("click", function(){
    createEntry(document.getElementById('a').value);
});

就目前而言,您将结果createEntry作为事件侦听器传递,而不是函数本身

更多信息在这里:

https://developer.mozilla.org/en/docs/DOM/element.addEventListener

于 2012-12-07T21:14:58.447 回答
7

更改此行

input.addEventListener("click", createEntry(document.getElementById('a').value));

进入

input.addEventListener("click", function(){
createEntry(document.getElementById('a').value);
});
于 2012-12-07T21:15:17.990 回答
4

尝试使用 jQuery 之类的 JavaScript 库进行事件处理和 DOM 操作,以确保浏览器安全和统一。

您可以使用 jQuery 中的事件处理程序,如下所示:

$(<element_selector>).on("click", function (event) {
     // your code here...
});
于 2012-12-07T21:18:53.930 回答