在按钮上使用onclick属性调用的javascript函数

时间:2014-06-30 06:34:40

标签: javascript html5 onclick

我不明白为什么this无效。 我坚持w3schools的参考。 代码如下:

HTML:

<button onclick="click()">Test</button>

使用Javascript:

function click() {
    alert("Hello !");
}

5 个答案:

答案 0 :(得分:4)

它没有用,因为你已经配置了JSFiddle来将JavaScript包装在一个函数中并将其称为onload。这会使您的函数成为全局函数,因此它不在您的内部事件处理程序属性的范围内。

此外,修复后,内部事件属性的奇怪范围规则(我不知道这些属性的记录)意味着click被解析为按钮的click属性在搜索范围足够远以找到全局click函数之前。

快速而肮脏的解决方案是:

  • 将函数重命名为不与现有属性名称冲突的内容
  • 从JSFiddle
  • 左侧的菜单中选择 no wrap 选项

正确的解决方案是使用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保存您的代码。延期。如果有任何问题,请告诉我。感谢。