有关javascript onclick的问题

时间:2016-08-27 08:34:58

标签: javascript jquery html

我正在使用 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");
}

我只收到一次警报,甚至没有点击。 请帮帮我。

3 个答案:

答案 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,以便在您单击锚链接时调用该函数。