2010-09-19 20 views
15

IE7 et IE8 ne sont pas me laisser Splice mon tableau (Safari, Chrome, travail Firefox):épissure Array lance erreur dans 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 lance l'erreur suivante: « L'objet ne prend pas en charge cette propriété ou méthode » pour cette ligne:

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

Toutes les idées? Ou d'autres façons de supprimer un élément de tableau par valeur? Merci d'avance!

Répondre

29

Array.indexOf n'est pas supporté par Internet Explorer avant la version 9. Vous pouvez utiliser la fonction utilitaire $.inArray de jQuery, ou tout autre shim/polyfill que vous voulez à la place.

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

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

+0

Merci Yi Jiang! – Kyle

+9

Encore une autre raison pour laquelle IE est le fléau de beaucoup d'existence d'un web-devloper. Merci! – exoboy