我正在动态生成一个表格。
在td数据内,有一个超链接,应该调用一个函数。
为什么下面的代码片段不起作用。当我点击链接时没有任何反应。
<a href='#' onclick='function(){alert('hiii');}'>
<a href='#' onclick='function(){alert('hiii');}'>
这是因为存在冲突的'
和函数定义而不是调用(感谢@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>
出于安全原因,通过innerHTML
添加的事件处理程序在某些情况下不会触发。此外,包含function()
是不正确的,因为所有这个onclick
将做的就是定义一个匿名函数而已,什么也不会发生。您还有引号冲突。
如果您正在使用jQuery,则事件委托会使此过程更简单。完全排除onclick
并使用类似以下内容:
$(document).on("click", "a", function () { alert("hiii"); });
document
和a
选择器应该尽可能具体。
您还可以根据需要将事件绑定到添加到DOM的元素上。
onclick='function(){alert('hiii');}'
这段代码使用引号的方式有误,应该采用以下正确方式之一:
onclick='function(){alert("hiii");}'
或者
onclick="function(){alert('hiii');}"
现在有两种语法可以在运行时实际执行函数。
(function(){...})();
onclick="(function(){alert('hiii');})();"
new function(){...};
onclick="new function(){alert('hiii');};"
<a onclick='function(){alert('hiii');}' href='#' >
试试这个,它可以在没有任何问题的情况下工作,不需要事件监听器
试试这个:
<a href="javascript:alert('hi');">
不应使用onclick="function(){alert('hiii');}"
。您可以尝试以下代码:
<a href="#" onclick="alert('hiii');">
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>
};
虽然这是一个引用问题,但以下方法可以解决您的问题。
<a href='#' onclick="alert('hiii')">
<a href="javascript:void(0);" @click="alert('hiii')">