我正在动态生成一个表。 在td数据中,有一个超链接。它应该调用一个函数。 为什么下面的代码片段不起作用。点击链接时没有任何事情发生。
<a href='#' onclick='function(){alert('hiii');}'>
答案 0 :(得分:4)
出于安全原因,在某些情况下,通过innerHTML
添加的事件处理程序不会触发。包含function ()
也不正确,因为onclick
所做的就是定义一个匿名函数而不执行任何其他操作。你也有相互矛盾的引用。
如果您正在使用jQuery,事件委派会使这更简单。完全排除onclick
并使用类似的内容:
$(document).on("click", "a", function () { alert("hiii"); });
document
和a
选择器应尽可能具体。
您还可以根据需要将事件绑定到添加到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>
};