在一些IE版本中,Array.indexOf会抛出错误

15

在IE7和IE8中,我无法对数组进行splice操作(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

Array.indexOf在Internet Explorer 9之前的版本不受支持。您可以使用jQuery的$.inArray实用函数,或者任何其他您想要的shim/polyfill代替。

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

参见:http://api.jquery.com/jQuery.inArray/


9
IE是许多网络开发人员灾难的又一个原因。谢谢! - exoboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接