2012-02-14 13 views
0

私はthisコードがあります。IEは "グローバル"変数を管理できません。

SCRIPT438: Object doesn't support this property or method 
show, Row 33 Char 4 

(私の全体の元のコードに)私のスクリプトの一部を壊します:

<div class="riga" style="border-top:0;"> 
    <div class="col3" id="txtValoreCatastale">0,00 euro</div>    
</div> 

<script type="text/javascript"> 
    txtValoreCatastale = $('#txtValoreCatastale'); 
</script> 

は、私はエラーを取得するようです! しかし、私が書いた:

var txtValoreCatastale = $('#txtValoreCatastale'); 

それは完全に動作します。

この現象はなぜですか?別の大きなバグ?

+1

IEとChromeは、IDを持つ各要素のグローバル変数を作成します。直接(window.txtValoreCatastale1 = ... ')直接オーバーライドすることはできないようですが、' var'を使用するとこれを回避するようです。 –

答えて

1

IEは、使用するすべての要素のidの独自のグローバル変数を作成します。だから問題は、IEはすでにtxtValoreCatastaleという独自の変数を作成しているということです。それの前にvarを追加することによって、関数のスコープ内でローカル変数であることをIEに伝えるので、IEはそれを許可します。 someOtherVariableNameのような別の名前を呼んだ場合、varなしでうまく動作します。

+1

Uhm ...なぜこのdoesntの作品ですか? http://jsfiddle.net/6YjXt/2/ – markzzz

+0

実際には、(アラートに)印刷する必要があります '0,00 euro' – markzzz

+0

IEはjQueryオブジェクトにそれを回すしないので、それは動作しません。これはDOM要素です。だから、もしあなたが望むなら、$(txtValoreCatastale)を使ってjQueryオブジェクトにすることができます。または、IEとして作成したい場合は、txtValoreCatastale.innerHTMLのようにHTMLを取得します。 – davidethell

4

だけで簡単に思考:あなたはidを持つDIVを指定すると、それはその名前のグローバル変数になります。したがって、すでにtxtValoreCatastaleというグローバル変数があります。これはDOM要素です。 IDまたは変数名を変更するとうまくいくはずです。

+0

+1、正解は私より数分先です。 – davidethell

関連する問題