我有这样的代码
<a id='lnk1' onclick='do something' >test</a>
稍后将代码添加到相同的 anchor 标记中
lnk = document.getElementById('lnk1')
lnk.onclick = function() { do something}
现在发生的事情是,在第二段代码中, anchor 标记的 onclick 函数被覆盖了。相反,我想要发生的是运行第一个 onclick 的代码,然后运行第二个 onclick 的代码。
最佳答案
有一种非常简单且符合标准的方法可以做到这一点:
lnk1.addEventListener('click', function() {
// do something
});
这在版本 9 之前的 IE 中不起作用,因此您需要这样做:
var handler = function() {
// do something
};
if ("addEventListener" in lnk1) { // standards-compliant browsers
lnk1.addEventListener('click', handler);
} else { // Internet Explorer < v9
lnk1.attachEvent('onclick', handler);
}
这会起作用,HTML 属性和上面代码中指定的原始函数都会运行。 但是 最好在同一个地方定义所有事件处理程序:在 Javascript 中。认真考虑从 HTML 属性中删除事件处理逻辑。
关于Javascript 的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7416896/