2012-03-13 20 views
0

次のコードを確認してください。IEのselect要素でjqueryのval()が動作しない場合がある

<script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 

<script type="text/javascript"> 
function s() { 
    supplier = jQuery('#sup').val(); 
    status = jQuery('#sta').val(); 
    alert('Supplier:'+supplier+'#Status:'+status); 
} 
</script> 

     <select id="sup"> 
      <option value="empty">Supplier</option> 
      <option value="1">supplier1</option> 
      <option value="2">supplier2</option> 
     </select> 

     <select id="sta"> 
      <option value="empty">Status</option> 
      <option value="1">status1</option> 
      <option value="2">status2</option> 

     </select> 

     <button type="button" onclick='s()'>Show</button> 

私がショーボタンをクリックすると、ステータス値がFFになります。 しかし、警告では、ステータスに空文字列が含まれていることが示されます。

サプライヤとステータスの構造は同じです。 両方のブラウザでサプライヤの価値が正しく取得されています。

+0

常に変数宣言の前にvarを定義します – sandeep

+2

jQueryのバージョン1.2.6は**非常に古いものです。そして、はい、あなたの変数は 'var'で宣言されるべきです。 – Pointy

+0

jQueryのバージョンが4年近く近くなっていることをご存知でしょうか?右? – Jamiec

答えて

2

グローバルstatus変数を使用しているため、ステータスバーメッセージの設定に使用する必要があります。あなたはvar statussの関数statusではなく、別の変数名を使用するだけです。

この変更を参照してください。http://jsfiddle.net/HPR3w/2/変更が加えられました。私はIE9でそれをテストし、今動作します。

+0

素晴らしい!変数名 'status'を 'status_'に変更しました。今、それは 'var'キーワードを追加してうまく動作しています。 –

0

試してみる:

function s() { 
    var supplier = jQuery('#sup').val(); 
    var status = jQuery('#sta').val(); 
    alert('Supplier:'+supplier+'#Status:'+status); 
} 

一つ

varキーワードでローカル変数を宣言する必要があります。

+0

どうしたらいいですか? –

+0

@Habeeb:完全な文章をお読みください。ローカル変数を宣言する必要がある場合は、キーワード 'var'で宣言しなければなりません。そうでなければ自動的にグローバル変数になります。 – ZeNo

+0

そのコメントをお送りください。とにかくここの問題は、私はキーワードを使用していた。これはローカルグローバルスコープの問題ではありません。 –

関連する問題