为什么我的 jquery switch 语句不起作用
Why isn't my jquery switch statement working?
我正在尝试使用一些简单的运算符进行jquery(javascript)switch语句,但它没有按预期工作
console.log('test '+getShippingCost(8));
function getShippingCost(shop_qty) {
shipping_costs = 0;
dest = $("input[name='dest']").val();
console.log(dest);
if (dest === 'DOMESTIC') {
switch (shop_qty) {
case (shop_qty > 4):
shipping_costs = 3.5;
break;
case (shop_qty <= 4):
shipping_costs = 2;
break;
}
console.log('domestic shipping '+shipping_costs);
}
if (dest === 'INT') {
switch (shop_qty) {
case (shop_qty > 4):
shipping_costs = 4.5;
break;
case (shop_qty <= 4):
shipping_costs = 3;
break;
}
}
return shipping_costs;
}//end function
参见 JSFIDDLE
要在switch
中使用条件,您需要在案例中查找true
值:
switch (true) {
case (shop_qty > 4):
shipping_costs = 3.5;
break;
case (shop_qty <= 4):
shipping_costs = 2;
break;
}
由于第二种情况与第一种情况相反,因此您可以使用default
:
switch (true) {
case (shop_qty > 4):
shipping_costs = 3.5;
break;
default:
shipping_costs = 2;
break;
}
当您有多个条件时,这种结构更适合。在这种情况下,您应该考虑 if
语句是否更适合:
if (shop_qty > 4) {
shipping_costs = 3.5;
} else {
shipping_costs = 2;
}
由于这两种情况都为同一变量赋值,因此您也可以使用条件运算符编写它:
shipping_costs = shop_qty > 4 ? 3.5 : 2;
switch
语句中的案例计算值,而不是布尔表达式:请参阅此处。
您可以将尝试使用 switch
语句所建议的逻辑放在三元表达式中,例如:
shipping_costs = (shop_qty > 4) ? 3.5 : 2;
Switch 无法通过计算布尔表达式来工作。Switch 计算初始表达式,然后尝试使用严格相等性将大小写与该表达式匹配。所以你不能做
case(x<4.5):
你必须做这样的事情
case 4:
改用 if、else if、else 语句。
相关文章:
- 循环通过数组的If语句不起作用
- Javascript变量到PHP变量-如果语句不起作用,则发布
- 如果语句不起作用,请单击
- 三元语句不起作用
- Javascript if和else语句不起作用
- PHP代码中实现的JavaScript |if语句不起作用
- 如果语句不起作用 - JavaScript
- 简单的JS计算器-为什么不是'这个if语句不起作用
- alert语句不起作用
- 范围的Switch语句不起作用
- js 函数中的 if 语句不起作用
- Javascript AJAX PHP if语句不起作用
- JAVASCRIPT if 语句不起作用
- JavaScript var getElementById if 语句不起作用
- Java 脚本如果语句不起作用
- 为什么我的删除位置语句不起作用
- 为什么我的 jquery switch 语句不起作用
- 否则语句不起作用是我在 jQuery 上的语法不正确
- JavaScript if 语句不起作用
- JavaScript 从 XML 中提取数据(如果 else 语句不起作用)