【问题标题】:Uncaught ReferenceError: *function here* is not definedUncaught ReferenceError: *function here* is not defined
【发布时间】:2014-07-03 19:54:25
【问题描述】:

未捕获的引用错误:未定义limitText

仅从匹配结果的数量来看,我发现很多其他人都遇到过这个问题 - 尽管解决方案是根据具体情况运行的。

这基本上是一个功能,用于在您输入时告诉您在给定表单中还剩下多少个字符 - “您还剩下 XXX 个字符”。

Javascript:

"use strict"; // <-- This was a suggested remedy, did nothing.
function limitText(limitField, limitCount, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    } else {
        limitCount.value = limitNum - limitField.value.length;
    }
}

HTML(不相关的 PHP 省略):

<textarea name="BlogPost" maxlength="5000" cols="100" rows="20" 
onKeyDown="limitText(this.form.BlogPost,this.form.countdown,5000);" 
      onKeyUp="limitText(this.form.BlogPost,this.form.countdown,5000);" required></textarea>
   <font size="1">(Maximum characters: 5000)<br>
   You have <input readonly type="text" name="countdown" size="3" value="5000">
   characters left.</font>

将我的浏览器置于“调试模式”实际上会导致脚本正常运行 - 尽管我真的不能指望任何运行该应用程序的用户也这样做。如果将脚本直接放入带有&lt;script&gt;&lt;/script&gt; 的文档中,它也可以工作,尽管我正在使用的系统责骂这是“不好的做法”,因为您希望通过它的花哨模块系统加载脚本。 (媒体维基)

有什么想法吗?

【问题讨论】:

  • 脚本标签是在正文的顶部还是在头部?
  • 你确定脚本在使用 textarea 之前已经加载了吗?
  • 确保limitText 在全局范围内或使用不同的方法绑定事件处理程序:quirksmode.org/js/introevents.html。您收到错误是因为您有语法错误并且代码无法执行,或者因为该函数不在全局范围内。
  • 现在它在顶部,虽然我都试过了,但没什么区别。 @wbennett - 是的。
  • limitText 在哪里定义?它在某个 .js 文件中吗?

标签: javascript html mediawiki referenceerror


【解决方案1】:

onKeyDownonKeyUp 的第一次迭代(你错过了 form 元素)– http://jsfiddle.net/3ZAeP/

代码

(function (global) {
    global.limitText = limitText;
    function limitText(limitField, limitCount, limitNum) {
        if (limitField.value.length > limitNum) {
            limitField.value = limitField.value.substring(0, limitNum);
        } else {
            limitCount.value = limitNum - limitField.value.length;
        }
    }
}(window));

这很有趣,因为limitText 应该是全局的。

【讨论】:

  • 我仍然对此感到困惑!由于这种轻微的挫败感,我差点把我的笔记本电脑扔出窗外。谢谢你的回答,这让整个 Mediawiki IRC 都被难住了。
猜你喜欢
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
  • 2023-03-04
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多