我正试图让自己开始使用jsFiddle。所以我尝试运行一个简单的代码片段,其中包含所有HTML,CSS和JavaScript代码。
Javascript不起作用如果我选择框架中的onLoad&扩展程序下拉列表
但是当我从下拉列表中选择No Wrap-in时它确实有用
你能告诉我这是什么意思吗?我已经在SO JavaScript not running on jsfiddle.net
上阅读了这个问题但无法理解那里提到的解决方案。
答案 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()
只能在匿名函数的闭包中直接显示。