【问题标题】:Array.indexOf throws errors in some IE versionsArray.indexOf 在某些 IE 版本中抛出错误
【发布时间】:2010-09-19 01:43:21
【问题描述】:

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);

有什么想法吗?或者其他按值删除数组项的方法?提前致谢!

【问题讨论】:

    标签: javascript jquery arrays internet-explorer


    【解决方案1】:

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

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

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

    【讨论】:

    • IE 成为许多 Web 开发人员存在的祸根的另一个原因。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多