可能重复:
In JavaScript doing a simple shipping and handling calculation
许多公司通常会收取运费和手续费。创建一个允许用户在文本框中输入购买价格的网页,其中包含一个计算运费和处理的JavaScript函数。为脚本添加功能,对于小于或等于$ 25.00的任何购买,增加1.50美元的最低运费和手续费。对于任何超过$ 25.00的订单,将运费和处理的总购买价格加10%,但不包括1.50美元的最低运费和手续费。计算百分比的公式是价格*百分比/ 100.例如,计算50.00美元购买价格10%的公式为50 * 10/100,这导致运费和手续费为5.00美元。确定订单的总成本(购买加运输和处理)后,将其显示在警告对话框中。
<!DOCTYPE>
<html><head>
<title>Project Two</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
/*<CDATA[[*/
var salesPrice = window.prompt("Please Enter Purchase Price?", "");
minShipping = salesPrice * 1.50/100;
maxShipping = salesPrice * 10/100;
(salesPrice <= 25)? totalPrice = salesPrice + minShipping
: totalPrice = salesPrice + maxShipping;
alert(totalPrice);
/*]]>*/
</script>
</head>
我需要检查所有脚本并注意,我们仍然在第2章,因此(if)语句不允许使用。 感谢。
答案 0 :(得分:0)
首先,您的三元运算符似乎非常具有重复性。有一种方法可以缩短它:
totalPrice = salesPrice + ( salesPrice <= 25 ? minShipping : maxShipping );
然后,在使用var
关键字之前声明变量是一个好习惯。在这种特殊情况下,建议是无用的,因为脚本将在全局范围内执行,因此所有变量将最终成为全局变量。
由于window.prompt
的返回类型为String
,因此您的脚本版本会连接结果。当一个人尝试将String
添加到Number
时,后者只会转换为String
并且会发生连接。
您可以使用内置的parseInt
(或parseFloat
)函数或adding a plus sign将String
显式转换为Number
。
<script type="text/javascript">
/*<CDATA[[*/
var salesPrice, minShipping, maxShipping, totalPrice;
salesPrice = +window.prompt( 'Please Enter Purchase Price?', '' ),
minShipping = salesPrice * 1.5 / 100;
maxShipping = salesPrice * 10 / 100;
totalPrice = salesPrice + ( salesPrice <= 25 ? minShipping : maxShipping );
alert( totalPrice );
/*]]>*/
</script>