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。它可能與同名的財產相撞。嘗試重命名它。