10
私はIEでJavaScriptのスコープ9

はIEは、JavaScriptのエラーがスローされます:「googleMapsQuery」プロパティの値を(他のブラウザで動作します)nullまたはundefinedではなく、Functionオブジェクトである

これをして実際の問題を抱えている

私の文書の本文の中にあります(はい、スクリプトは適切なHTMLのために頭の中に入るべきですが、前にスクリプトを壊すことはありませんでした)。これはtbodytrブロック内tdブロックの内側にある

<script type="text/javascript"> 
function googleMapsQuery(accountNum) { 
    // function code is here (omitted for brevity) 
} 
</script> 

:スクリプトは、このページにのみ関連し、私は、スクリプトの共有ヘッダページを台無しにしたくないので、体内にありますbody内部formブロック内tableブロック内のブロック:私もちょうどスクリプト関数宣言の順序が(それはない)関連であった場合には、フォーム上のスクリプトブロックを移動

<button id="google-422111" onclick="googleMapsQuery(422111)" type="button">Google This!</button> 

スクリプトは、FirefoxとChromeで完璧に動作しますが、IE 9(上の互換表示の有無にかかわらず)で、私はこのエラーを取得:

SCRIPT5007: The value of the property 'googleMapsQuery' is null or undefined, not a Function object

私はJavaScriptのスコープを学び、私はいかなる理由を把握することはできませんなぜIEは 'googleMapsQuery'がプロパティであると考えているのか、それはなぜ定義されていないのですか?それは関数なので、定義しました!

+2

本文は、スクリプトのための完全な場所です。実際には、本体の下部にあります。 –

+0

HEAD内のスクリプトタグは、本体を処理する前に同期して(シリアルに)処理されます。本文のスクリプトタグは、他のスクリプトやその他のDOMノードと一緒に非同期に読み込まれます。

答えて

11

私は答えを見つけましたが、私が報告したにもかかわらず、ブラウザ固有ではありませんでした。バグは私の関数コードにあり、どのブラウザーでも発生していました。それはこれまでのことです。 FireFox/FireBugに固有のコードが2行ありました。彼らはconsole.logを使用しました。 IEでは、彼らはエラーを投げたので、私はそれらをコメントアウトしました(または私は考えました)。私はそれらをコメントしている泥酔した仕事をし、私の機能でブラケットを破った。

オリジナルコード(その中にconsole.logで):

if (sxti.length <= 50) console.log('sxti=' + sxti); 
if (sxph.length <= 50) console.log('sxph=' + sxph); 

切れコード(コメント内部置き忘れブラケット):

if (sxti.length <= 50) { //console.log('sxti=' + sxti); } 
if (sxph.length <= 50) { //console.log('sxph=' + sxph); } 

固定コード(固定ブラケットの外側のコメント):

if (sxti.length <= 50) { }//console.log('sxti=' + sxti); 
if (sxph.length <= 50) { }//console.log('sxph=' + sxph); 

それで、それは私自身のお粗末なコーディングでした。この関数は実際には定義されていませんでした。なぜなら、構文エラーがそれを閉じないようにしていたからです。

ああ、生きて学ぶ。 ;)

2

onclick="googleMapsQuery(422111);"にセミコロンを追加しましたか?セミコロンがないとエラーが発生するかどうかをテストするには十分なコードがありませんが、構文についてはもっと気になります。

+0

セミコロン。この機能は、私の一部ではなんらかの不適切なコメントやブラケットのために、実際には定義されていませんでした。スクリプトが実行可能なコードであっても、コンパイルされないようにする真の構文エラーです。 ;) – chriv

0

私は同じ問題に直面していました。あなたのjQueryを他のjQueryスクリプティングを開始させた後に問題が発生しました。結局それは正常に動作します。

+8

この回答は私には意味がありません。 –

17

nullまたは未定義のプロパティで同様の問題が発生していました。

これは、IEのドキュメントモードがIE7標準にデフォルト設定されていたことになりました。これは、互換モードがすべてのイントラネットサイト(ツール>互換表示設定>イントラネットサイトを互換表示で表示するように自動的に設定されているためです。)。

+2

これは私を大いに助けてくれました。このページはGoogle検索の最初のヒットになりました。「プロパティの値は関数オブジェクトではないnullまたは未定義です。ほんとありがと! – benshepherd

0

同じような状況で、同じエラーが発生しました。私は私のdevマシン上の互換モードを変更して忘れて、私はjavascriptでもconsole.logコマンドを持っていました。 IEで互換モードを元に戻し、console.logコマンドを削除しました。もう問題はありません。

関連する問題