1

javascript 代码在 Internet Explorer 中显示错误,但在 FF 中没有。

$(document).ready(function(){




var countries = [
  ["Afghanistan","Af"],
  ["Åland Islands","Ax"],
  ["Zimbabwe","Zw"]
];

 var countryNames = countries.map(function(country){
  return {
    /*label: '<div class="flag '+country[1].toLowerCase()+'">'+country[0]+'</div>',*/
    value: country[0]
  }

  var my_var=countryNames();
}); 

});

在 IE 8 开发者工具中,如果我调试 js,错误信息是:'对象不支持这个属性或方法'。错误在以以下行开头的代码段中指示:

var countryNames = countries.map(function(country){

如何使代码在 IE 中工作?

4

4 回答 4

4

Array.prototype.map()函数仅在 Internet Explorer 9 中受支持,因此该代码在早期版本的浏览器中无法运行。由于您已将问题标记为 jQuery,因此您可以改用jQuery.map()函数:

var countryNames = jQuery.map(countries, function(country) {
    return { 
        value: country[0]
    }
});

jsFiddle DEMO在 IE7 模式下使用 Internet Explorer 9 进行测试。

于 2012-09-19T09:13:59.647 回答
1

使用 Jquery .each() 代替http://api.jquery.com/jQuery.each/

var countryNames = [];    
$.each(countries, function(index, value){
    countryNames.push(value[0]);
}
于 2012-09-19T09:05:36.350 回答
0

并非所有版本(如果有)都有Array.prototype.map

这是一个 polyfill/MonkeyPatch,您可以在 IE 下使用它来支持它——但如果您for ... in在数组上使用,包含此代码可能会导致问题。

Array.prototype.map

于 2012-09-19T09:06:09.520 回答
0
  var my_var=countryNames();
}); 

应该:

}); 
  var my_var=countryNames;

为我在IE9中工作。

或者你可以像尼尔肯尼迪所说的那样使用 $.each 。

于 2012-09-19T09:08:39.937 回答