0

私はこの問題に頭を悩ませています。次のようなJavaScriptコードがあります。

<script type=text/javascript>
function readVals(){
  val1 = $('#select1').val()
  val2 = $('#select2').val()
  val3 = etc.
}
</script>

<select id='select1'>
 <option value='val1'>val1</option>
 <option value='val2'>val2</option>
</select>
<select id='select2'>
 <option...

readVals メソッドは、Firefox、Chrome、Safari、および Mac、Ubuntu、Windows でテストされた、デスクトップから実行する場合に問題なく動作します。ただし、Android と iPhone では、モバイル ブラウザーに関係なく、$('#select2').val() は常に 0 を返します。さらに奇妙なのは、次のような別のテスト関数を作成したことです。

function getVal2(){
  alert($('#select2').val())
}

getVal2()は、ページの の直前readVals()に宣言さ<head>れ、モバイル デバイスでも正しい値を警告します。そこで、実行getVal2()して正しい値を確認します。次にreadVals()、すぐに実行して間違った値を取得しますが、val2、およびモバイル デバイスのみで、すべてのモバイル ブラウザーでのみです。

何か案は?

4

2 に答える 2

1

OMG、問題が何であるかを理解しました。varローカルにするために追加するとすぐに:

var val2 = ...

その後、問題は解決しましたが、なぜ問題がモバイルデバイスでのみ発生したのかがわかりました。質問をするためにコードを単純化および短縮しましたが、変数の実際の名前は、orientationモバイルで使用されていると推測していますデバイスがどのように回転したかを説明します。これが、モバイル デバイスから受信した値が 0 と 90 (度) だった理由を説明しています。バカバカバカ。まあ、それを理解するのに3日しかかかりませんでした。お時間を無駄にして申し訳ありません。次回は実際のコードを掲載します。

于 2012-03-14T00:23:23.273 に答える
0

pageinit イベントを使用して、ページがレンダリングされた後にのみ関数を呼び出してみましたか?

$(document).live( 'pageinit',function(event){
    readVals()
});
于 2012-03-14T00:01:22.700 に答える