JavaScript - 为<a> runs without click</a>的onclick属性添加了函数

时间:2013-06-27 16:21:29

标签: javascript html function onclick

我有一个创建新<a>元素的函数,我想向它添加一个onclick事件,这是一个将给定值增加1的函数。

在函数中,我创建了这些元素:

spantags中的数字:

        var spantags = document.createElement("span");
        var anzahl = 1;
        spantags.innerHTML = anzahl;

提到的<a>元素:

        var plus = document.createElement("a");
        plus.innerHTML = "+";
        plus.onclick = more(spantags.innerHTML);

然而,这已经在创建它的函数中执行了该函数,因此在创建时该数字增加到2。

我在类似的问题上阅读了这个答案: https://stackoverflow.com/a/249084/1972372

这个例子很有用,警告只在点击+时出现,但它是一个内部函数,而不是像我的“more(element)”那样的声明函数。

所以我的问题是:是否可以将onclick属性设置为新创建的元素上的声明函数,就像在我的示例中一样,但是阻止它立即运行?

(另一篇文章也有一个jQuery的答案,但不幸的是我对jQuery一无所知并且无法使用它)

2 个答案:

答案 0 :(得分:3)

是的,只需将其包装在“代理”功能中:

plus.onclick = function() {
    more(spantags.innerHTML);
};

答案 1 :(得分:1)

当然,但首先您必须了解plus.onclick = more(spantags.innerHTML);将使用参数more调用spantags.innerHTML,并将从该函数调用返回的结果分配给plus.onclick

您可以按照之前的建议将其包装在代理函数中,或者您可以利用bind方法将参数绑定到函数本身:

plus.onclick = more.bind(null, spantags.innerHTML);

阅读Bind here:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind