使用jQuery 1.9.1& IE8,但页面也需要在IE7中工作。在导致问题的部分之前的代码中,我在&中读取了一些数据。构建一个SELECT
语句的数组。在我遇到问题的代码部分中,我正在执行以下操作:
var found = $.map( mySelArr, function(val) {
return val.mySelID === zSelID ? val.mySelStatement: null;
});
然后我引用它:
var selStmt = found[0];
(只返回1个,我知道它将在数组中)。
在IE7中,我看到它在jquery.js中抛出一个异常。当我逐步调试它时,我发现找到的长度为零(在IE7中)。如果我将模式更改为IE8,一切正常。但是在IE7中,没有任何东西被放入found
变量中。
在IE7中无法获取此数组值,我做错了什么?非常感谢任何想法。
修改
mySelArr是一系列Select语句,类似于:
1,<select name='mySelID_1' id='plist' ><option selected='selected' disabled='disabled' value='0'>Select Action</option><option value="1">This one</option><option value="2">That one</option></select>
等等。
编辑2
我可能偶然发现了这个问题。
保留select语句的数组在IE8中正确填充,但在IE7中没有填充。
我实际上有2个数组,一个只是一个数字,另一个是相同的数字+ Select语句。具有索引和数组的数组select语句是使用:
构建的arr1.push({ fld1:data1, fld2:selstmt})
只使用数字构建的那个:
arr2.push(arrndx)
arr2是外部FOR,arr1是内部FOR。我曾使用以下方法来指代数字索引:
var z = arr2[x][0];
获取数字&amp;然后使用它来循环通过arr1以获得与之匹配的所有内容。构建Select语句。我发现IE7在上面的代码行中返回undefined
,而IE8正在返回该数字(Firefox也)。
我更改了2行代码来解决问题:
FROM arr2.push(arrndx)
TO arr2.push( {arrindex: arrndx} );
和
FROM arr2[x][0]
TO arr2[x].arrindex
它适用于IE7和IE IE8。 IE7在创建该数组或读取它时没有问题 - 由于我试图引用其中的字段,因此它只是其中的有效数据。
我不确定IE7为何会出现问题&amp; IE8没有,但....而且,修复似乎没有破坏其他任何东西。