【问题标题】:jsFiddle onload and no-wrap in bodyjsFiddle onload 和 no-wrap in body
【发布时间】:2015-08-25 14:12:14
【问题描述】:

我正在尝试让自己开始使用 jsFiddle。所以我尝试运行一个简单的代码 sn-p,其中包含所有 HTML、CSS 和 JavaScript 代码。

如果我在 Frameworks & Extensions 下拉菜单中选择 onLoad,Javascript 不起作用

但是当我从下拉列表中选择 No Wrap - in 时它确实有效

你能告诉我那是什么意思吗?我已经在 SO JavaScript not running on jsfiddle.net 上阅读过这个问题

但无法理解那里提到的解决方案。

【问题讨论】:

标签: javascript jsfiddle


【解决方案1】:

当您选择 onLoad 时,您的 JavaScript 将使用 onload 函数进行包装。这意味着您的代码将在页面完成加载后运行,但在全局范围内不再可用。看起来是这样的

window.onload=function(){
   function myFunction() {
       alert("Hello");
   }
}

一种解决方法可能是将变量分配给window 对象,以便可以在页面中的任何位置访问它们。

例如:

function myFunction() {
    alert("Hello");
}
window.myFunction = myFunction;

<button onclick="window.myFunction()" >Hi</button>

【讨论】:

    【解决方案2】:

    当使用onLoad 时,该函数不会成为全局函数,因此您不能直接从 HTML 调用它。如果它是全局的 - 就像使用 no-wrap 时一样 - 它可以工作。

    onLoad 生成类似的东西:

    window.onload = function () {
        function myFunction() {
        }
    }
    

    所以,myFunction() 只在匿名函数的闭包中直接可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-12
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多