我不明白为什么this无效。 我坚持w3schools的参考。 代码如下:
HTML:
<button onclick="click()">Test</button>
使用Javascript:
function click() {
alert("Hello !");
}
答案 0 :(得分:4)
它没有用,因为你已经配置了JSFiddle来将JavaScript包装在一个函数中并将其称为onload
。这会使您的函数成为全局函数,因此它不在您的内部事件处理程序属性的范围内。
此外,修复后,内部事件属性的奇怪范围规则(我不知道这些属性的记录)意味着click
被解析为按钮的click
属性在搜索范围足够远以找到全局click
函数之前。
快速而肮脏的解决方案是:
正确的解决方案是使用JavaScript附加事件处理程序。这不是20世纪90年代,我们应该避免使用那个未能分离问题的那个时代的技术。将JS保存在一个地方,将HTML保存在另一个地方。
<button>Test</button>
<script>
document.querySelector('button').addEventListener('click', click);
function click(evt) {
alert("Hello !");
}
</script>
答案 1 :(得分:2)
此代码不起作用,因为已经存在click
本机方法并且遮蔽它会阻止正常的单击事件处理。给它另一个名字,它会工作。
一种方法是将按钮定义为
<button onclick="console.log(click)">Test</button>
答案 2 :(得分:1)
我认为你不能给出click
的函数名称。更改您的功能名称&amp;它应该工作。
答案 3 :(得分:1)
click
似乎是保留的。
尝试重命名方法:http://jsfiddle.net/qeCE5/1/
function clickMe() {
alert("Hello !");
}
答案 4 :(得分:1)
您需要更改功能名称。 &#39;单击&#39;可能是一个保留的关键字,所以当你调用它时它不会识别。将其重命名为其他名称,例如。 &#39; democlick()&#39 ;.也不要忘记用&#39; .html保存您的代码。延期。如果有任何问题,请告诉我。感谢。