当前位置: 首页 > 面试题库 >

JavaScript无法在jsfiddle.net上运行

傅琦
2023-03-14
问题内容

以下代码可在实时站点上运行,但无法在jsfiddle站点上运行。

谁能告诉我为什么它在jsfiddle上不起作用?

在控制台上,它记录:ReferenceError: fillList is not definedReferenceError: mySelectList is not defined

您将代码作为片段嵌入此处时,可以看到该代码的工作原理:

function BetterSelect(oSelList) {

  this.objSelectList = oSelList;

  this.objSelectList.onchange = this.selectionChanged;

}

BetterSelect.prototype.clear = function() {

  this.objSelectList.options.length = 0;

}

BetterSelect.prototype.fill = function(aValues) {

  this.clear();

  for (var i = 0; i < aValues.length; i++) {

    this.objSelectList.options[i] = new Option(aValues[i]);

  }

}

BetterSelect.prototype.find = function(strToFind, bSelect) {

  var indx = -1;

  this.objSelectList.options.selectedIndex = -1;

  for (var i = 0; i < this.getCount(); i++) {

    if (this.objSelectList.options[i].text == strToFind) {

      indx = i;

      if (bSelect)

        this.objSelectList.options.selectedIndex = i;

    }

  }

  return indx;

}

BetterSelect.prototype.getCount = function() {

  return this.objSelectList.options.length;

}

BetterSelect.prototype.selectionChanged = function() {

  alert("selection changed!");

}



var mySelectList = null;

window.onload = function() {

  mySelectList = new BetterSelect(document.getElementById('theList'));

}



function fillList() {

  mySelectList.fill(["one", "two", "three", "four", "five"]);

}



function findIt() {

  mySelectList.find(document.getElementById('txtToFind').value, true);

}


<form action="" method="post">

  <select multiple="multiple" name="Select1" id="theList" style="width: 152px; height: 226px">

  </select>

  <br />

  <input name="Button1" type="button" value="Fill The List" onclick="fillList()" />

  <input name="Button4" onclick="mySelectList.clear()" type="button" value="Clear The List" />

  <br />

  <input name="Button2" onclick="alert(mySelectList.getCount())" type="button" value="What's The Count?" />

  <br />

  <input name="Text1" type="text" id="txtToFind" />

  <input name="Button3" type="button" value="Search" onclick="findIt()" />

</form>

问题答案:

您定义的函数是在onload函数中定义的,因此在它们被引用之前,因为它们是在该函数中定义的,所以只能在该函数中引用它们。您在HTML中将它们称为全局变量。您有三种选择

a)(最简单,最快,最不理想)-更改function blah(){}window.blah = function(){};使功能全局化。

b)(理想的方式)-使用不引人注目的Javascript将行为仅从JS内附加到DOM元素,这意味着将HTML与JS分开。

c)使jsfiddle不包装东西。更改onLoad为不缠绕(身体或头部)。

因此,<p onclick="lol()" id="foo">您不必var e = document.getElementById('foo'); e.onclick = lol;只在JS中进行操作。

我推荐b,因为它鼓励最佳做法。



 类似资料:
  • 问题内容: 我在Windows上有一个基本的webserver hello world应用程序,可用于Windows上的nodejs,它可在localhost上运行。但是,当我从互联网测试它时,它无法连接。我在netgear路由器中设置了端口转发。我是否在这里缺少使我的nodejs服务器对外界可见的步骤? 谢谢。 问题答案: 确保您聆听而不是 是仅对您的计算机可见的专用网络。 侦听所有接口,包括私

  • 问题内容: 我正在尝试在Ubuntu终端上运行javac。但是我得到以下信息: JDK已经安装并运行说 我的jdk安装在/ usr / lib / jvm / java-6-open- jdk中;而且我能够从Eclipse编译并运行Java程序。但是在使用终端时遇到了上述问题。 问题答案: 该二进制(可能其他的Java二进制文件)是/不是您的用户环境变量。有几种解决方法: 添加到用户的环境变量。您

  • 问题内容: 所以我最近一直在C9上使用Node.js,并在一个javascript文件中遇到了这个问题: 这是我的代码: 我更新了所有依赖关系以及Node本身,但仍然遇到此问题。有人知道怎么回事吗? 问题答案: 我面临着同样的问题。正在网上寻找解决方案。事实证明,jsdom自v10以来已更新了一些功能。因此,我想在快速应用程序的Node.js端使用jQuery,并且必须像下面这样进行操作: 从v1

  • 根据Maven的发布历史,应该可以在JDK7上运行Maven的任何最新版本(在编写本文时)。但是,当我在Ubuntu21.04机器上尝试这样做时,我得到了一个错误:。 即使在不包含任何Java文件或文件的目录中运行而没有任何参数时也会发生这种情况。 Maven信息: (我还安装了Zulu1.7.292和OpenJDK;那里的行为是相同的。)

  • 我的应用程序在Android 6上崩溃, 调用时,我正在使用带有自定义适配器的改型:方法不工作 问题出在哪里?