html锚标记的onclick无效

时间:2013-12-22 05:30:14

标签: javascript jquery html ajax

我正在动态生成一个表。     在td数据中,有一个超链接。它应该调用一个函数。     为什么下面的代码片段不起作用。点击链接时没有任何事情发生。

  <a href='#' onclick='function(){alert('hiii');}'>

9 个答案:

答案 0 :(得分:4)

出于安全原因,在某些情况下,通过innerHTML添加的事件处理程序不会触发。包含function ()也不正确,因为onclick所做的就是定义一个匿名函数而不执行任何其他操作。你也有相互矛盾的引用。

如果您正在使用jQuery,事件委派会使这更简单。完全排除onclick并使用类似的内容:

$(document).on("click", "a", function () { alert("hiii"); });

documenta选择器应尽可能具体。

您还可以根据需要将事件绑定到添加到DOM的元素。

答案 1 :(得分:3)

这是因为'和funciton定义冲突而不是调用(感谢@ user1389596):

<a href='#' onclick="alert('hiii')">

应该有用。 onclick中的额外'使浏览器将其视为onclick属性的结尾,这不是您想要的。这样,使用两种不同类型的引号,它可以正常工作。

或者,更好的是,不要使用内联处理程序:

<a href='#' id="thethingy">
<!--in a galaxy far, far away:-->
<script type="text/javascript">
    document.addEventListener('DOMContentLoaded',function(){
        document.getElementById('thethingy').addEventListener('click',function(){
            alert('hiii');
        },false);
    },false);
</script>

答案 2 :(得分:3)

第一期

onclick='function(){alert('hiii');}'

根据 使用引号 ,严重错误编码。正确的用法应该是以下任何一种

正确使用引号

onclick='function(){alert("hiii");}'

onclick="function(){alert('hiii');}"

这只是关于语法的。但是在运行时实际调用该函数仍有一些工作要做。如果没有适当的调用,函数将不会被执行。这是第二个问题。

第二期

现在有两种语法可供您在运行时实际执行该函数。

第一种语法:

(function(){...})();

所以代码应该是 -

onclick="(function(){alert('hiii');})();"

<强> Fiddle Demo1

第二语法

new function(){...};

所以代码应该是 -

onclick="new function(){alert('hiii');};"

<强> Fiddle demo2

答案 3 :(得分:1)

你正在定义一个函数......没有调用它。

答案 4 :(得分:0)

试试这个:

 <a href="javascript:alert('hi');">

答案 5 :(得分:0)

您不应该使用onclick="function(){alert('hiii');}"。您可以尝试以下代码:

<a href="#" onclick="alert('hiii');">

答案 6 :(得分:0)

<a onclick='function(){alert('hiii');}' href='#' >

尝试这一方法,它将毫无问题地工作,不需要事件监听器

答案 7 :(得分:0)

尽管这是一个引号问题。以下将解决您的问题。

<a href='#' onclick="alert('hiii')">

如果您像我一样使用Vue.js,onclick将无法正常工作。您可以使用它。

<a href="javascript:void(0);" @click="alert('hiii')">

答案 8 :(得分:0)

也许这对某人有帮助, 起初我以为是因为存在 href 并且在 onclick 事件之前插入。

然而,这里是一个调用函数并传递参数的 a 标记示例。

两个示例都具有不同顺序的 onclick 事件和 href 属性。

function helloWorld(message){
  alert('Hello world! : ' + message);
};
<a href='#' onclick="helloWorld('href before onclick')">Click Me (href then onclick)</a>
<br>
<br>
<a onclick="helloWorld('onclick before href')" href="#">Click Me (onclick then href)</a>

};