jsFiddle onload和no-wrap in body

时间:2015-08-25 14:12:14

标签: javascript jsfiddle

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

enter image description here

Javascript不起作用如果我选择框架中的onLoad&扩展程序下拉列表

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

enter image description here

你能告诉我这是什么意思吗?我已经在SO JavaScript not running on jsfiddle.net

上阅读了这个问题

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

2 个答案:

答案 0 :(得分:5)

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

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

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

例如:

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

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

答案 1 :(得分:1)

使用onLoad时,该功能不会成为全局功能,因此您无法直接从HTML调用它。如果它是全局的 - 就像使用无包装一样 - 它可以工作。

onLoad生成类似内容:

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

因此,myFunction()只能在匿名函数的闭包中直接显示。