2010-09-19 21 views
15

IE7 và IE8 không cho tôi ghép mảng của tôi (Safari, Chrome, Firefox làm việc):Mảng splice ném lỗi trong IE

 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 ném các lỗi sau: "Đối tượng không hỗ trợ tài sản hoặc phương pháp" cho dòng này:

lzaCreateAd1.weatherArray.splice(lzaCreateAd1.weatherArray.indexOf(idVal),1);

Bất kỳ ý tưởng? Hoặc các cách khác để xóa mục mảng theo giá trị? Cảm ơn trước!

Trả lời

29

Array.indexOf không được Internet Explorer hỗ trợ trước phiên bản 9. Bạn có thể sử dụng chức năng tiện ích $.inArray của jQuery hoặc bất kỳ shim/polyfill nào khác mà bạn muốn thay thế.

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

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

+0

Cảm ơn Yi Jiang! – Kyle

+9

Tuy nhiên, một số lý do tại sao IE lại là nguyên nhân gây ra nhiều sự tồn tại của nhà phát triển web. Cảm ơn! – exoboy

Các vấn đề liên quan