【问题标题】:JavaScript Coding for Finding Shipping Total用于查找运输总额的 JavaScript 编码
【发布时间】:2023-04-10 01:19:02
【问题描述】:

我很难处理这段代码。我已经研究了几天,似乎无法弄清楚。请帮忙!!

以下是我需要的具体代码: 许多公司通常会收取购买的运费和手续费。创建一个网页,允许用户在文本框中输入购买价格,并包含一个计算运输和处理的 JavaScript 函数。向脚本添加功能,为任何小于或等于 25.00 美元的购买添加 1.50 美元的最低运费和手续费。对于任何超过 25.00 美元的订单,在总购买价格中增加 10% 的运费和手续费,但不包括 1.50 美元的最低运费和手续费。计算百分比的公式是价格 * 百分比 / 100。例如,计算 50.00 美元购买价格的 10% 的公式是 50 * 10 / 100,这会产生 5.00 美元的运费和手续费。确定订单的总成本(购买加上运费和手续费)后,将其显示在警报对话框中。

这是我的代码:

<!DOCTYPE>

<head>
<title>Calculate Shipping</title>

<script type="text/javascript">

function parseInt() {
var salesPrice = document.salesForm.Price.value;
var minCharge = salesPrice + 1.50;
var shipping = salesPrice * 10/100;
if (salesPrice <= 25)
window.alert('Your sales total including shipping is $' + minCharge);
 else 
window.alert('Your sales total including shipping is $' + salesPrice + shipping);
}
</script>
</head>
<body>
<form name="salesForm">
<div >
<p>Enter Your Purchase Price</p>
<input type="text" name="Price" /><br /><br />
<input type="button" name="Calculate" value="Calculate Shipping"
onclick="parseInt ()" />
</div>
</form>
</body>
</html>

除了警告框中的数学之外,一切正常。它会显示不正确的总数...

【问题讨论】:

  • 您是否对所有值分别进行了 alert() 处理并且它们看起来都正常?在加法周围放置一些括号,以便将其与字符串连接分开。另外,也许在您的销售计算中指定浮点数(例如 10.0/100.0 而不是 10/100...虽然 JS 可能在这里宽容)
  • 您不能在警报中添加salesPriceshipping。它认为它是一个字符串。
  • 你为什么把你的函数叫做“parseInt”?
  • 当我输入 74(随机示例)时,我的警报框会通知我“您的销售总额(包括运费)为 747.4 美元”。我想我的脑子被这段代码炒了。我只是不明白。之前有人告诉我尝试使用 parseInt,但我不确定在哪里/如何正确使用它。我是如此接近,但无论我尝试改变什么,我似乎都无法解决这个问题......

标签: javascript


【解决方案1】:

输入值总是作为字符串返回,而不是数字;解决这个问题:

var salesPrice = parseFloat(document.salesForm.Price.value),
    minCharge = salesPrice + 1.50,
    shipping = salesPrice * 10/100;

问题是+ 要么将数字相加,要么连接字符串:

var num1 = 1,
    num2 = 3,
    num3 = '2';
console.log(num1 + num2); // 4
console.log(num2 + num3); // '32'

参考资料:

【讨论】:

    【解决方案2】:

    它显示了错误的值,因为它是连接字符串而不是对值求和

    你可以在提醒他们之前总结一下,比如

    var salesAndShipping = salesPrice + shipping
    window.alert('Your sales total including shipping is $' + salesPrice + shipping);
    

    或者您可以简单地将表达式括起来,例如:

    window.alert('Your sales total including shipping is $' + (salesPrice + shipping) );
    

    哦,顺便说一句,我认为您正在通过调用您的 ParseInt 来覆盖本机函数

    【讨论】:

      【解决方案3】:

      这里是jsFiddle link

      function showAlert() {
      var salesPrice = parseFloat(document.getElementById('Price').value);    
      var minCharge = salesPrice + 1.50;
      var shipping = salesPrice * 10/100;
      if (salesPrice <= 25)
      window.alert('Your sales total including shipping is $' + minCharge);
          else {
      window.alert('Your sales total including shipping is $' + parseFloat(salesPrice + shipping));
          }
      }
      

      parseInt 也是 javascript 方法,因此如果您创建具有相同名称的方法,您将看到意外行为。 Read more here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-15
        • 2014-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-01
        相关资源
        最近更新 更多