jQuery $ .map适用于IE8但不适用于IE7

时间:2013-10-03 17:47:19

标签: javascript jquery arrays internet-explorer-8 internet-explorer-7

使用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没有,但....而且,修复似乎没有破坏其他任何东西。

0 个答案:

没有答案