我在这个问题上撕扯我的头发。我有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
,仅适用于移动设备,但适用于任何移动浏览器。
有什么想法吗?
答案 0 :(得分:1)
var
使其成为本地:
var val2 = ...
然后问题就消失了,但我刚想到为什么这个问题只出现在移动设备上:我简化并缩短了我的代码来提问,但变量的实际名称是orientation
,我猜测移动设备使用它来描述设备是如何旋转的。这就解释了为什么从移动设备传入的值为0和90(以度为单位)。愚蠢的愚蠢。好吧,只花了三天才搞清楚。抱歉浪费你的时间。下次我将发布实际代码。
答案 1 :(得分:0)
您是否仅在使用pageinit事件呈现页面后尝试调用您的函数?
$(document).live( 'pageinit',function(event){
readVals()
});