2010-02-17 30 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>(用户没有选择任何内容)映射到免费送货方式。