代码之家  ›  专栏  ›  技术社区  ›  Kyle Cureau

array.indexof在某些IE版本中引发错误

  •  15
  • Kyle Cureau  · 技术社区  · 14 年前

    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 回复  |  直到 6 年前
        1
  •  29
  •   Yi Jiang G-Man    13 年前

    Array.indexOf 在版本9之前,Internet Explorer不支持。您可以使用jquery的 $.inArray 实用程序函数,或者您想要的任何其他填充/多边形填充。

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

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