【问题标题】:Using Function onChange使用函数 onChange
【发布时间】:2015-02-27 17:35:16
【问题描述】:

我有一个文本输入:

<input class="stops" id="stops" onchange="stopsChanged();">

而我当前的 JavaScript 看起来像:

<script>
  function stopsChanged(){
    alert();
  }
</script>

但是当我运行我的代码时,我得到了这个错误:

ReferenceError:stopsChanged 未定义

为什么会出现这个错误?

【问题讨论】:

  • 它在我这边工作得非常好。可能是您在此函数上方编写了一些无效的其他脚本
  • 单独的代码应该可以工作,假设它们都在同一个页面中?
  • 不,它不在同一个页面中。我的 javascript 代码在另一个页面上。
  • 那就不行了……脚本和元素必须在同一个页面
  • 确保您的 js file 和 html 文件位于同一位置。你应该在你的html 文件中包含js 文件

标签: javascript


【解决方案1】:

您必须在您的&lt;input&gt; 所在的页面上包含您的JS 文件

<script type="text/javascript" src="path/to/your/file.js"></script>

编辑:

可能发生的情况是您将JS 文件包含在 &lt;input&gt; 加载到DOM 之后。通过这种方式,HTML 会在您的function 出现之前尝试访问它。尝试将您的 &lt;script&gt; 放在您的 HTML&lt;head&gt; 中,并确保它不在 .ready() 函数或类似函数中。

以上来源:Uncaught ReferenceError: myFunction is not defined

【讨论】:

  • @Nejthe 我做了更多的研究并根据我的发现编辑了我的答案。
  • 不需要使用外部文件。不需要使用类型属性。在输入之后包含 JS 无关紧要 - 在触发事件处理程序之前,HTML 不会尝试访问该函数。
  • 在下结论之前检查我添加的来源。
【解决方案2】:

试试这个方法。

HTML:

<input id="stops">

JS:

document.getElementById('stops').onchange = function(){
    console.log('test');   
}

在功能和表现的分离方面也更好。

【讨论】:

    【解决方案3】:

    我认为您的问题是您的外部 javascript 文件中有 HTML 标记。您不需要在 .js 文件的内容中使用 html 标记包装外部 javascript 代码。

    如果您使用的是外部文件引用,请确保在您的 HTML 文件中定义您的脚本类型:

    <script type="text/javascript" src="http://www.yoursource.com/file.js"></script>
    

    在某些浏览器中,如果没有在开始标签中定义类型,它将不知道如何解析外部资源。

    【讨论】:

    • 脚本类型是可选的,默认等于 text/javascript
    • @aduch,如果脚本在括号内定义,那么您是对的。但是,如果脚本资源通过脚本标记中的“src”属性是外部的,则不会。
    • 您对 HTML
    • @Nejthe,我能想到的唯一一件事是您的 stopChanged() 函数定义上方的其他函数之一中的语法不正确。这将是一个未闭合/打开的括号,它在解析外部文件时会破坏浏览器。
    猜你喜欢
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多