Reputation: 6488
javascript code shows error in Internet Explorer but not in 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();
});
});
In IE 8 developer tool, if I debug js, the error message is :' Object doesn't support this property or method'. And the error is indicated at the snippet starting with the line :
var countryNames = countries.map(function(country){
How to make the code work in IE ?
Upvotes: 1
Views: 8858
Reputation: 38345
The Array.prototype.map() function is only supported in Internet Explorer 9, so that code won't work in earlier versions of the browser. Since you've tagged the question as jQuery, you could use the jQuery.map() function instead:
var countryNames = jQuery.map(countries, function(country) {
return {
value: country[0]
}
});
jsFiddle DEMO tested using Internet Explorer 9 in IE7 mode.
Upvotes: 4
Reputation: 36
var my_var=countryNames();
});
should be:
});
var my_var=countryNames;
Worked in IE9 for me.
Or you can you use $.each like Neil Kennedy said.
Upvotes: 0
Reputation: 23863
Not all versions (if any) have Array.prototype.map
This is a polyfill/MonkeyPatch you can use to support it under IE -- but including this code may cause problems if you use for ... in
on your arrays.
Upvotes: 0
Reputation: 603
Use Jquery .each() instead http://api.jquery.com/jQuery.each/
var countryNames = [];
$.each(countries, function(index, value){
countryNames.push(value[0]);
}
Upvotes: 1