Array.indexOf выдает ошибки в некоторых версиях IE - PullRequest
15 голосов
/ 19 сентября 2010

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 Ответ

29 голосов
/ 19 сентября 2010

Array.indexOf не поддерживается Internet Explorer до версии 9. Вместо этого вы можете использовать служебную функцию jQuery $.inArray или любой другой shim / polyfill.

lzaCreateAd1.weatherArray.splice($.inArray(idVal, lzaCreateAd1.weatherArray) ,1);

См .: http://api.jquery.com/jQuery.inArray/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...