2010-02-17 66 views
1
function ship_stuff() 
{ 

ship_me = document.getElementById("shipMethod").value; 
alert(ship_me); 
if("ship_me" == "priority2") 
{ 
    document.getElementById("shippingChg").value = 3.20; 
} 

else if(ship_me == "priority3") 
{ 
    document.getElementById("shippingChg").value = 4.30 ; 
} 
else if(ship_me == "priority4") 
{ 
    document.getElementById("shippingChg").value = 5.40 ; 
} 

else if(ship_me == "overnight") 
{ 
    document.getElementById("shippingChg").value = 15.75 ; 
} 

else if(ship_me == "UPS") 
{ 
    document.getElementById("shippingChg").value = 15.00 ; 
} 

else (ship_me == "free") 
{ 
    document.getElementById("shippingChg").value = 0.00 ; 
} 

代碼的HTML部分:當我和我的變量比較字符串如何將表單名稱傳遞給if else else循環?

<tr> 
     <th colspan="4" class="label">Shipping Method: 
      <select name="shipMethod" id="shipMethod" size="1"> 
      <option value="">Choose a shipping method</option> 
      <option value="priority2">Priority mail $3.20 (4 items or less)</option> 
      <option value="priority3">Priority mail $4.30 (6 items or less)</option> 
      <option value="priority4">Priority mail $5.40 (8 items or less)</option> 
      <option value="overnight">Express $15.75 (4 items or less only)</option> 
      <option value="UPS">UPS - 2 day $15.00 (9 - 49 items)</option> 
      <option value="free">Free shipping (50+ items only)</option> 
      </select> 
     </th> 
     <td><input name="shippingChg" id="shippingChg" type="text" size="10" maxlength="60" value="" /></td> 
     </tr> 
     <tr> 

我的JavaScript循環失敗。它不會將選項值作爲字符串進行比較。任何想法如何解決這個問題?

感謝您的幫助!

回答

1

您在最後的else子句中缺少if。如果您希望它始終運行,請刪除括號中的條件。

此外,試圖映射代替的if/else鏈:

var shippingCharges = { 
    "priority2" : 3.20, 
    "priority3": 4.30, 
    "priority4" : 5.40, 
    "overnight": 15.75, 
    "UPS": 15.00, 
    "free": 0.00 
}; 

document.getElementById("shippingChg").value = shippingCharges[ship_me]; 
1

這是可疑的:

if("ship_me" == "priority2") 

難道你的意思是:

if(ship_me == "priority2") 

您可能還需要申報ship_me爲VAR:

var ship_me = document.getElementById("shipMethod").value; 

顯式轉換到字符串可以這樣完成:

ship_me = String(ship_me); 
1
ship_me = document.getElementById("shipMethod").options[document.getElementById("shipMethod").selectedIndex]; 

這就是獲得選定選項的正確方法。

1

嘿馬特,請你幫個忙,並使用此代碼來代替:

var shipping_costs = { 
    'priority2': 3.2, 
    'priority3': 4.3, 
    'priority4': 5.4, 
    'overnight': 15.75, 
    'UPS': 15.0, 
    'free': 0.0 
}; 

var method = document.getElementById('shipMethod').value; 

document.getElementById("shippingChg").value = shipping_costs[method] || 0.0; 

這一切就是這麼簡單。請注意,雖然我將描述性選項<option value="">Choose a shipping method</option>(用戶沒有選擇任何內容)映射到免費送貨方式。