【问题标题】:The script on JSFiddle doesn't work [duplicate]JSFiddle 上的脚本不起作用[重复]
【发布时间】:2019-01-07 17:28:24
【问题描述】:

我有一个简单的 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

【问题讨论】:

  • 这是 jsfiddle:window.myFunction = function...
  • 将 LOAD TYPE 选项更改为“No wrap, bottom of head”jsfiddle.net/tob4dugj/4
  • @DhavalMarthak 更好...

标签: javascript


【解决方案1】:

这是因为 JSFiddle 将 JavaScript 置于您看不到的隐式闭包中。因此,您的功能是在该范围内本地定义的,并且按钮无法访问它。

使其全球化(虽然出于其他原因这是一个糟糕的想法),解决了这个问题:

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

Updated Fiddle

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-19
    • 2018-04-28
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多