代码之家  ›  专栏  ›  技术社区  ›  Sanfly

JSFiddle上的脚本不工作[重复]

  •  0
  • Sanfly  · 技术社区  · 7 年前

    这个问题已经有了答案:

    我有一个简单的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 回复  |  直到 7 年前
        1
  •  1
  •   Mitya    7 年前

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

    使其全球化(尽管出于其他原因这是一个糟糕的想法),可以解决以下问题:

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

    Updated Fiddle

    这也是一个从内联(即在HTML中)事件处理转移到集中处理的好时机 addEventListener() .