2011-07-22 50 views
0

Javascriptファイルに小さなバグがあります。これはシンプルなファイルですが、Firefox 6では正常に動作していません(Chrome上ではうまくいきます)。 すべてがここ ReferenceError:関数が定義されていません

uncaught exception: ReferenceError: (function) is not defined 

は、JSファイル http://pastebin.com/raw.php?i=CMy4WYPFです...私が直接これらの機能にアクセスしようとした場合、私が得る、document.ready内で呼び出さときにのみ働いている)()(提出、および検証を除いて取り組んでいます、それはjQueryのlibの後に読み込まれ、他のJSファイルはありません。

ありがとうございました。

答えて

3

コードがロードされる方法やタイミングが表示されないため、実行時は不明です。

ドキュメントマークアップが提供されていないため、動作しているかどうか、または動作していない可能性があります。改善のためのいくつかの提案があります。違いがあるかもしれません。

次の文:

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

は、スクリプトの先頭にあります。ステートメントの実行時に、IDで参照される要素がDOM内に存在するかどうか

jQueryの(配列番号)を使用して配列内のコードを検索することは、ネイティブのArray.prototype.indexOfメソッドがないブラウザでは非効率的です(これはかなりの数です)。デリミタ付きの文字列としてコードを持ち、遍在するString.prototype.indexOf()メソッドを使用するほうがはるかに優れています。

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

提出機能は掲載コードで呼び出されていません。

スクリプトの多くは、非常に非効率的に表示されます。

> 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オブジェクトを作成しないことです。いけない含めることを忘れ

+0

を表し、そしてそれが今取り組んでいます他の答えはありません、私はあなたのものを正しいものとしてマークします。 –

0

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

あなたはjqueryのを使用している場合は、以降、最適化のヒントを指してくれてありがとう、XX-xは、私はすべてを書き換えている

関連する問題