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,我猜是移动设备使用的devices 来描述设备是如何旋转的。这就解释了为什么来自移动设备的值是 0 和 90(以度为单位)。傻傻傻傻。好吧,只花了三天时间就弄清楚了。很抱歉浪费您的时间。下次我将发布实际代码。

于 2012-03-14T00:23:23.273 回答
0

您是否尝试仅在页面呈现后使用 pageinit 事件调用您的函数?

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