JSFIDLE.net上未运行JavaScript
下面的代码在一个实时站点上运行,但我无法让它在该站点上运行 例如,见 有人能告诉我为什么它不起作用吗 它在控制台上记录:JSFIDLE.net上未运行JavaScript,javascript,html,jsfiddle,Javascript,Html,Jsfiddle,下面的代码在一个实时站点上运行,但我无法让它在该站点上运行 例如,见 有人能告诉我为什么它不起作用吗 它在控制台上记录:ReferenceError:fillList未定义和ReferenceError:mySelectList未定义 当代码作为代码段嵌入此处时,您可以看到它的工作原理: 功能更佳选择(oSelList){ this.objSelectList=oSelList; this.objSelectList.onchange=this.selectionChanged; } Bett
ReferenceError:fillList未定义
和ReferenceError:mySelectList未定义
当代码作为代码段嵌入此处时,您可以看到它的工作原理:
功能更佳选择(oSelList){
this.objSelectList=oSelList;
this.objSelectList.onchange=this.selectionChanged;
}
BetterSelect.prototype.clear=函数(){
this.objSelectList.options.length=0;
}
BetterSelect.prototype.fill=函数(aValues){
这个.clear();
对于(变量i=0;i
您定义的函数是在onload函数中定义的,因此,在它们可引用之前,因为它们是在该函数中定义的,所以只能从该函数中引用它们。在HTML中将它们引用为全局变量。你有三个选择
a) (最简单、最快、不理想)-将函数blah(){}
更改为window.blah=function(){}代码>使函数全局化
b) (理想的方式)-使用不引人注目的Javascript将行为单独从JS中附加到DOM元素,这意味着将HTML与JS分开
c) 让JSFIDLE不要在加载时包装这些东西。将onLoad
更改为不包裹(身体或头部)
因此,您不需要执行var e=document.getElementById('foo');e、 onclick=lol代码>仅在JS中
我推荐b,因为它鼓励最佳实践。在您的小提琴中选择无缠绕(头部)
在左侧的下拉列表中,单击Run,它将起作用
当选择了onLoad
时,您的函数将在$(document).ready(function(){})的闭包中定义代码>仅限。我发现了相同的问题,并通过在JavaScript设置中更改加载类型来解决它:
JavaScript设置下拉菜单中的无换行
或无换行
。请参阅下图
看看:
或者最好看看这个:
以下是我测试的内容:
function testJSON() {
var jsonString = '{"param1":"123","param2":"XXX78","param3":"11378"}';
var tmp_obj = eval('(' + jsonString + ')');
document.getElementById("result").innerHTML = tmp_obj.param2;
}
及
最好使用第二种方法
p.S.>我来自谢谢。那么,代码是如何在活动站点上工作的呢?因为这些函数没有在活动站点上的另一个函数中定义。JSFIDLE将JS抛出到函数中。查看源代码,谢谢。但是,需要这种解决方法是非常荒谬的。请参见,除非您试图从会话中读取cookies,否则可能的重复Nowrap是一个不错的选择。现在似乎不再有任何Nowrap选项,即使文档中仍然提到它(它似乎已经过时)。它仍然存在。它位于“Javascript”窗格的“设置”下拉列表中。似乎不再有任何Javascript菜单。@CpnCrunch No。菜单仍在Javascript代码部分的右上角。好的,谢谢,你说得对。我看着窗户的左上方。我从来没有想过菜单选项会出现在子窗口中。
function testJSON() {
var jsonString = '{"param1":"123","param2":"XXX78","param3":"11378"}';
var tmp_obj = JSON.parse(jsonString);
document.getElementById("result").innerHTML = tmp_obj.param2;
}