2009-04-24 5 views
0

IE8 lève un message "Erreur: Objet requis" (erreur dans le script de la bibliothèque jquery réelle, pas dans mon fichier javascript) lorsque l'instruction switch de cette fonction est exécutée. Ce code fonctionne dans IE6, IE7, FF3, et Safari ... Des idées? Cela a-t-il quelque chose à voir avec le sélecteur '$ (this)' dans le commutateur? Merci!IE8 Jquery Javascript "Erreur: Objet requis" Bogue

 
function totshirts(){ 
    $('.shirt-totals input').val('0'); 
    var cxs = 0; 
    var cs = 0; 
    var cm = 0; 
    $.each($('select.size'), function() { 
     switch($(this).val()){ 
      case "cxs": 
       cxs ++; 
       $('input[name="cxs"]').val(cxs); 
       break; 
      case "cs": 
       cs ++; 
       $('input[name="cs"]').val(cs); 
       break; 
      case "cm": 
       cm ++; 
       $('input[name="cm"]').val(cm); 
       break; 
     } 
    }); 
} 
+0

Aucune indication quant à quelle ligne? IE 8 a un débogueur de script intégré. – Greg

+0

L'erreur provient du fichier de la bibliothèque Jquery, pas de mon fichier javascript ... Ligne 14 'value = jQuery.browser.msie &&! Option.attributes.value.specified? Option.text: option.value' –

+0

Merci d'avoir supprimé le des cas supplémentaires car ils n'ajoutaient rien à l'exemple, mais je voudrais dire que cela renforce mon point de vue: utilisez cette approche plus générique et vous pourrez la changer plus facilement à l'avenir. – cgp

Répondre

1

J'ai mis à niveau la bibliothèque jQuery de 1.2.6 à 1.3.2 et cela a résolu le problème. Je n'avais pas réalisé que j'avais une ancienne version - oups.

Merci pour votre aide à tous!

3

Oh non, ne le faites pas comme ça.

Est-ce quelque chose de plus le long des lignes de celle-ci:

$('.shirt-totals input').val('0'); 
$('select.size').each(function() { 
var name = $(this).attr('name'); 
var currVal = parseInt($("input[name='"+name+"']").val()); 
$("input[name='"+name+"']").val(currVal+1); 
}); 

En tant que sidenote, je tendance à trouver que jQuery semble traiter avec des guillemets simples doubles mieux que dans la comparaison lorsque vous faites « égaux ».