ReferenceError:未定义函数

时间:2011-07-22 09:50:04

标签: javascript firefox

我的Javascript文件中有小错误(我猜)。这是一个简单的文件,但它在Firefox 6上没有按预期工作(在Chrome上工作正常)。 一切都在工作,除了submit(),而validate()只在document.ready中调用时才有效,如果我尝试直接访问这些函数,我得...

uncaught exception: ReferenceError: (function) is not defined

这是JS文件http://pastebin.com/raw.php?i=CMy4WYPF,它是在jQuery lib之后加载的,没有其他JS文件。

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:3)

您没有显示代码的加载方式和时间,因此执行代码时未知。

未提供文档标记,因此无法确定可能有效或无效的内容或原因。以下是一些改进建议,它们可能会有所不同。

以下陈述:

> var exception = $('#teligence-exception');
> var form = $('#teligence-ctc form');

位于脚本的顶部。执行语句时,DOM中是否存在ID引用的元素?

使用jQuery的 inArray 在数组中搜索代码在缺少本机Array.prototype.indexOf方法的浏览器中效率很低(这是很多)。最好将代码作为带分隔符的字符串,并使用无处不在的String.prototype.indexOf()方法,例如

var codes = '|201|202|203|';
...
    var x = code.indexOf('|' + val + '|');

在发布的代码中未调用 submit 函数。

大部分脚本效率都很低:

  > var val = $(this).val();
  > $(this).val( val.replace(/[^0-9]/, '') );

可以

    var val = this.value;
    this.value = val.replace(/D/g, '');

请注意,在原始代码中,只会替换第一个非数字字符。在建议的代码中,所有非数字字符都将被替换(由 g 标志提供)。

此外:

  validate($(this).attr('name'));

可以是:

  validate(this.value);

等等。我们的想法是不创建不必要的jQuery对象。

答案 1 :(得分:0)

别忘了包括,

 <script src="jquery-1.xx.x.min.js" type="text/javascript"> </script>

如果您使用的是jquery,则xx-x代表