JSFiddle上的脚本不起作用

时间:2018-07-31 10:32:57

标签: javascript

我有一个不起作用的简单javascript onclick函数调用,我一直盯着我看,看不到任何错误,我觉得我必须忽略一些超级简单的东西,但我看不到什么!

https://jsfiddle.net/sanfly/tob4dugj/

HTML:

<p id="demo"></p>
<button onclick="myFunction()">Click me</button>

JS:

function myFunction() {
  document.getElementById("demo").innerHTML = "Hello World";
}

错误:

Uncaught ReferenceError: myFunction is not defined at HTMLButtonElement.onclick

1 个答案:

答案 0 :(得分:1)

这是因为JSFiddle将JavaScript放在了一个看不见的隐式闭包中。太好了,您的函数在该范围内本地定义,按钮无法访问它。

将其全局化(出于其他原因,这是一个可怕的想法),可以解决此问题:

myFunction = function() { //make it global
  document.getElementById("demo").innerHTML = "Hello World";
}

Updated Fiddle

这也是摆脱内联(即HTML内)事件处理,而转向集中式addEventListener()的好时机。