【问题标题】:Working on a code but the calculations do not work处理代码但计算不起作用
【发布时间】:2014-01-23 02:30:19
【问题描述】:

所以我正在处理此代码,但我似乎无法将单选按钮金额与文本框中输入的金额结合起来。提交按钮应该计算。这是问题,我想正在为它创建此代码。 许多公司通常会收取购买的运费和手续费。创建一个允许用户在文本框中输入购买价格的网页;

包括一个计算运输和处理的 JavaScript 函数。

向脚本添加功能,为任何小于或等于 25.00 美元的购买添加 1.50 美元的最低运费和手续费。

对于任何超过 25.00 美元的订单,在总购买价格中增加 10% 的运费和手续费,但不包括 1.50 美元的最低运费和手续费。

计算百分比的公式是价格 * 百分比 / 100。例如,计算 50.00 美元购买价格的 10% 的公式是 50 * 10 / 100,即运费和手续费为 5.00 美元。

确定订单的总成本(购买加上运费和手续费)后,将其显示在警报对话框中 这是我到目前为止的代码。任何提示都会有所帮助。我无法弄清楚我做错了什么或如何解决它。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Calculate Shipping</title>

<script type="text/javascript">
/* <[CDATA[ */

var  price=[];
var shipping=[];
var total=price+shipping;

function calculateshipping(){
    var price = parseFloat(document.getElementByid('ent').value);
    var total = (price <=25) ? price +1.50 : 1.1 * price;
    window.alert("the purchase price with shipping is $" + total.tofixed(2));
}

function calculateShipping(){
    if (price <=25){
        shipping = (price =1.25);
    }
    else{
        shipping = (price *10/100);
    }

    window.alert("The purchase price with shipping is "
    +document.calculate.ent.value);

}

/*]]*/
</script>

</head>

<body>
<form name ="calculate" action="">
<p>
Enter Purchase Price
</p>
<input type="text" name="ent" />
<input type="button" name="button" value="submit" Onclick="calculateShipping()"/>
</form>
</body>
</html>

【问题讨论】:

  • 我看不出这与 PHP 有什么关系……甚至是 magento
  • 这是正确的吗?运费 = (价格 =1.25);
  • 你想得到id 改变它:&lt;input type="text" name="ent" id="ent" /&gt;
  • 没错:document.getElementById

标签: javascript


【解决方案1】:

首先,更改您的输入标签,如您帖子中提到的评论:

<input type="text" name="ent" id="ent" /> 

然后用这个替换整个脚本标签:

<script type="text/javascript">

function calculateShipping(){
  price = parseFloat(document.getElementById("ent").value);
  if (price <=25){
    shipping = 1.5;
  }else{
    shipping = (price *10/100);
  }
  total = price + shipping;
  window.alert("The purchase price with shipping is "+total);
}

</script>

添加 'id' 属性使 javascript 在执行函数时可以抓住一些东西。每次单击时,它都会获取该输入元素的值并将其解析为浮点数。

【讨论】:

  • 这不是我说的一样吗?运费也应该是 1.5 而不是 1.25。
  • 1.5 来自 OP 未使用的 calculateshipping() 函数。不要与 calculateShipping() @SpencerWieczorek 混淆 --- calculateshipping()calculateShipping() 完全是 two different animals。 ;-) OP 可以自己更改。
  • 根据 OP 希望执行的任务,他要求使用 1.50 美元的手续费,而不是 1.25 美元。
  • 这是挑剔的答案。如果它会让您感觉更好,请编辑答案并查看它是否被接受。这完全取决于你。 @SpencerWieczorek
【解决方案2】:

首先,您有两个名为CalculateShipping() 的javascript 方法——您如何确定要执行的内容?不应该只是像这样的一个方法CalculateShipping()

function calculateshipping(){
   var price = parseFloat(document.getElementByid('ent').value);
   var total = (price <=25) ? price +1.50 : 1.1 * price;
   window.alert("the purchase price with shipping is $" + total.tofixed(2));

   if (price <=25){
     shipping = (price =1.25);
   }
   else{
     shipping = (price *10/100);
   }

   window.alert("The purchase price with shipping is " + document.calculate.ent.value);
}

【讨论】:

  • 不正确:calculateshippingcalculateShipping 不同。
  • ^--: 没错。 OP 使用下两个相同名称的方法不是好的做法。然而calculateshippingcalculateShipping 完全是two different animals。注意Shipping 中的大写S 作为第二个函数名。
  • 我的错,没看到大写的S
  • 这里的主要问题似乎是带有小写字母的calculateshipping() 永远不会被调用。我什至不知道为什么 OP 把它放在那里。
  • 另外,通过不调用小写字母保持 price 为空值,这将确保他的运费始终为空
【解决方案3】:

似乎是一个非常基本的问题,将shipping = (price =1.25); 更改为shipping = 1.5;。然后只需计算价格并提醒它:

if(price <= 25)
   shipping = 1.5;
else
   shipping = (price*10)/100;

price += shipping;
alert(price);

这是一个小提琴:http://jsfiddle.net/HMRNB/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多