我有以下代码
var elements = parent.document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
elements[i].onclick = function () {
return confirm_exit('".$_SESSION['SES_abr_langue']."');
}
}
我需要将onclick附加到现有的onclick事件(如果存在)。
当我在函数()中添加elements[i].onclick
时,它只是“硬编码”它。这意味着它实际上放置了元素[i] .onclick而不是onclick的值。
谢谢!
答案 0 :(得分:4)
尝试使用addEventListener:
function onLinkClick() {
return confirm_exit('".$_SESSION['SES_abr_langue']."');
}
var elements = parent.document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
if (elements[i].addEventListener) {
elements[i].addEventListener("click", onLinkClick, false);
} else if (elements[i].attachEvent) {// for < IE9
elements[i].attachEvent("onclick", onLinkClick);
}
}
修改强>
如果您想控制原始onclick,请使用以下命令:
function createLinkEvent(orgOnClick) {
return function(e) {
if (!confirm_exit('".$_SESSION['SES_abr_langue']."')) {
return false;
}
if (orgOnClick) {
return orgOnClick(e);
}
return true;
};
}
}
var elements = parent.document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
elements[i].onclick = createLinkEvent(elements[i].onclick);
}