2

我有这个页面上一块的jQuery - http://blackeaglemedia.co.uk/cs-cart/form/preterm.htmjQuery的不工作在IE7/8

预期的结果应该显示建立在用户的零件号字段使得选择。

这在Chrome,Firefox和IE9中运行正常,但它似乎不能在IE7或IE8中工作。

的jQuery:

$(function() { 
var sku1 = sku2 = sku3 = sku4 = sku5 = sku6 = length = ''; 
$("#options").change(function(){ 

    switch($(this).val()){ 
     case "3134": 
      sku1 = 'TB'; 
     break; 
     case "3135": 
      sku1 = 'LT'; 
     break; 
     case "3154": 
      sku1 = 'LTR'; 
     break; 
     case "3136": 
      sku1 = 'BO'; 
     break; 
     case "3138": 
      sku1 = 'MC'; 
     break; 
     case "3139": 
      sku1 = 'NC'; 
     break; 
     case "3183": 
       sku1 = 'STA'; 
     break; 
    }$('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length); 
}); 
$("#options2").change(function(){ 
    switch($(this).val()){ 
     case "3111": 
       sku2 = 'LC'; 
     break; 
     case "3110": 
      sku2 ='LCA'; 
     break; 
     case "3112": 
      sku2 ='E2000'; 
     break; 
     case "3113": 
      sku2 ='E2A'; 
     break; 
     case "3114": 
      sku2 ='FC'; 
     break; 
     case "3115": 
      sku2 ='FCA'; 
     break; 
     case "3116": 
      sku2 ='ST'; 
     break; 
     case "3117": 
      sku2 ='SC'; 
     break; 
     case "3118": 
      sku2 ='SCA'; 
     break; 
    } $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length); 
}); 
$("#options3").change(function(){ 
    switch($(this).val()){ 
     case "3175": 
      sku3 = 'PRE2'; 
     break; 
     case "3121": 
      sku3 ='PRE4'; 
     break; 
     case "3122": 
      sku3 ='PRE6'; 
     break; 
     case "3123": 
      sku3 ='PRE8'; 
     break; 
     case "3124": 
      sku3 ='PRE12'; 
     break; 
     case "3125": 
      sku3 ='PRE16'; 
     break; 
     case "3126": 
      sku3 ='PRE24'; 
     break; 
     case "3176": 
      sku3 ='PRE48'; 
     break; 
    } $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length); 
}); 

$("#options4").change(function(){ 
    switch($(this).val()){ 
     case "3127": 
       sku4 = '09'; 
     break; 
     case "3182": 
      sku4 ='G657A1'; 
     break; 
     case "3128": 
      sku4 ='62'; 
     break; 
     case "3129": 
      sku4 ='50'; 
     break; 
     case "3130": 
      sku4 ='OM3'; 
     break; 
     case "3131": 
      sku4 ='OM4'; 
     break; 
    } $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length); 
}); 

$("#options5").change(function(){ 
    switch($(this).val()){ 
     case "3142": 
       sku5 = 'LC'; 
     break; 
     case "3143": 
      sku5 ='LCA'; 
     break; 
     case "3144": 
      sku5 ='E2000'; 
     break; 
     case "3145": 
      sku5 ='E2A'; 
     break; 
     case "3146": 
      sku5 ='FC'; 
     break; 
     case "3147": 
      sku5 ='FCA'; 
     break; 
     case "3148": 
      sku5 ='ST'; 
     break; 
     case "3149": 
      sku5 ='SC'; 
     break; 
     case "3150": 
      sku5 ='SCA'; 
     break; 
    } $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length); 
}); 

$("#options6").change(function(){ 
    switch($(this).val()){ 
     case "3151": 
       sku6 = 'LZSH'; 
     break; 
     case "3177": 
       sku6 ='PE'; 
     break; 
    } $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length); 
}); 

$('#length').change(function(){ 
    length = $(this).val(); $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length); 
}); 
}); 

$(function() { 
    $('input[type=text]#length').focus(function() { 
     $(this).val(''); 
     }); 
}); 

回答

2

首先,你应该考虑返工你的代码。一些代码重复是不必要的。它可能可以简化为10行或更少。

尤其是您应该使用对象(作为散列表)而不是开关或将“SKU”直接存储在选项中。

其次,您应该查看IE提供的错误消息,最好在Developer Tools的控制台中(F12> Script> Console),它会提示提示错误是什么(或至少在哪里)。

你的问题:出于某种原因,IE浏览器不喜欢一个变量被称为length。它可能与同名的财产相撞。尝试重命名它。