它不是一起加入,而是连接在一起

时间:2012-07-14 06:30:27

标签: javascript concatenation addition

  

可能重复:
  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)语句不允许使用。 感谢。

1 个答案:

答案 0 :(得分:0)

首先,您的三元运算符似乎非常具有重复性。有一种方法可以缩短它:

totalPrice = salesPrice + ( salesPrice <= 25 ? minShipping : maxShipping );

然后,在使用var关键字之前声明变量是一个好习惯。在这种特殊情况下,建议是无用的,因为脚本将在全局范围内执行,因此所有变量将最终成为全局变量。

由于window.prompt的返回类型为String,因此您的脚本版本会连接结果。当一个人尝试将String添加到Number时,后者只会转换为String并且会发生连接。

您可以使用内置的parseInt(或parseFloat)函数或adding a plus signString显式转换为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>