2010-02-17 7 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 ; 
} 

La partie HTML du code:Comment puis-je passer un nom de formulaire dans une boucle if else 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> 

Ma boucle javascript échoue quand je tente de comparer ma variable à une chaîne. Il ne mettra pas la valeur de l'option à comparer en tant que chaîne. Des idées comment je peux résoudre ce problème?

Merci pour l'aide!

Répondre

1

Il vous manque un if dans la dernière clause else. Si vous voulez toujours l'exécuter, supprimez le conditionnel entre parenthèses.

Aussi, essayez une application au lieu de si/chaîne d'autre:

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

Ceci est suspect:

if("ship_me" == "priority2") 

Ne pas vous dire:

if(ship_me == "priority2") 

Vous pouvez également déclarer ship_me comme var:

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

casting explicite à un la chaîne peut être faite comme ceci:

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

C'est la manière correcte d'obtenir l'option sélectionnée.

1

Hey Matt, faites-vous une faveur et utiliser ce code à la place:

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; 

C'est tout ce qu'il ya à ce . Gardez à l'esprit cependant que j'ai cartographié l'option descriptive <option value="">Choose a shipping method</option> (l'utilisateur n'a rien sélectionné) à la méthode d'expédition gratuite.