Array.indexOf выдает ошибки в некоторых версиях IE
IE7 и IE8 не позволяют мне объединять мой массив (Safari, Chrome, Firefox работают):
lzaCreateAd1.weatherArray = new Array();
var jWeatherIcon = $('.weatherIcon');
jWeatherIcon.bind('click', function (){
var targetID = $(this).attr('id') + 'Box',
idVal = targetID.substr(5,1);
var jTargetBox = $('#'+targetID);
if (jTargetBox.hasClass('inactive')) {
jTargetBox.removeClass('inactive').addClass('active');
lzaCreateAd1.weatherArray.push(idVal);
} else if (jTargetBox.hasClass('active')) {
jTargetBox.removeClass('active').addClass('inactive');
lzaCreateAd1.weatherArray.splice(lzaCreateAd1.weatherArray.indexOf(idVal),1);
}
});
IE выдает следующую ошибку: "Объект не поддерживает это свойство или метод" для этой строки:
lzaCreateAd1.weatherArray.splice(lzaCreateAd1.weatherArray.indexOf(idVal),1);
Любые идеи? Или другие способы удалить элемент массива по значению? Спасибо заранее!
Ответы
Ответ 1
Array.indexOf
не поддерживается Internet Explorer до версии 9. Вы можете использовать служебную программу jQuery $.inArray
или любую другую прокладку /polyfill, вы хотите вместо этого.
lzaCreateAd1.weatherArray.splice($.inArray(idVal, lzaCreateAd1.weatherArray) ,1);
Смотрите: http://api.jquery.com/jQuery.inArray/