我正在使用 javascript 动态创建链接代码(anchor tag)
。
有一个javascript函数将被事件触发,它将创建一个javascript链接。
我已经使用javascript提到了新创建的锚标记的必需属性。现在我还在锚标记上提到了onclick
事件。
问题是
在创建锚标记期间触发onclick
事件。它正在开火一次。下次当我点击链接时,我无法得到我想要的结果。
javascript代码:
function waybill()
{
var mail_link = document.createElement("a");
mail_link.href = "javascript:void(0)";
mail_link.className = 'animated bounceInDown';
mail_link.innerHTML = "Mail Waybill";
mail_link.onclick = abc_test();
var holder_div = document.getElementById("holder");
holder_div.appendChild(mail_link);
}
function abc_test()
{
alert("mail link clicked");
}
我只收到一次警报,甚至没有点击。 请帮帮我。
答案 0 :(得分:3)
mail_link.onclick = abc_test()
将调用abc_test
并将其返回值分配给mail_link.onclick
。
如果您只是想引用该功能而不是调用它,请忽略()
:
mail_link.onclick = abc_test;
添加事件监听器是许多旧浏览器以自己的方式进行的事情之一,并且添加对所有这些浏览器的支持有点混乱。 Sicnce这个问题被标记为jQuery,您可以在jQuery中完成所有这些并为您处理浏览器支持:
$('<a/>', {
href: 'javascript:void(0);',
'class': 'animated bounceInDown',
text: 'Mail Waybill',
}).appendTo('#holder').click(abc_test);
答案 1 :(得分:1)
问题是调用abc_test()将执行该函数,而仅使用abc_test将传递对该函数的引用。在这种情况下,您需要更改行:
mail_link.onclick = abc_test();
行:
mail_link.onclick = abc_test;
答案 2 :(得分:1)
这是因为你调用了函数而不是引用它。
mail_link.onclick = abc_test(); - 这将在初始化时调用该函数 mail_link.onclick = abc_test; - 这会将该函数的引用添加到onClick,以便在您单击锚链接时调用该函数。