家庭作业销售计算器

时间:2011-10-09 18:18:28

标签: javascript

昨天我提交了这个问题,得到了极好的回复,但我的代码仍然没有用。我根据另一个学生的代码修改了我的代码,但我的代码仍然无法计算,但它在javascript中验证。有什么建议。这个作业要到了!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4       /loose.dtd">
<html>
<head>
<title>Price Calculator</title>
<script type="text/javascript">
    function fixOrder() {
        const TAX = 0.975;
        var numPrice;
        var total;
        var tax;

        numPrice = parseFloat(document.getElementById("cost").value, 10);
        tax      = parseFloat(document.getElementById("tax").value, 10);
        total    = parseFloat(document.getElementById("total").value, 10);
        numPrice = numPrice * TAX;
        total    = numPrice;
        total    = document.getElementById("total").value = "$" + total.toFixed(2);

        if (isNaN(numPrice)) {
            alert("Sorry,you must enter a numeric value to place order");
            numPrice = 0;
        }
    }
</script>

</head>

<body bgcolor="#00f3F1">

    <h1 align="left">Price Calculator</h1>

    <form name="form" id="form">
       <p>Price: <input type="text" id="cost" name="cost" value="" onchange=
       "fixOrder" /></p>

       <p>Tax: &nbsp; <input type="text" id="tax" name="tax" value="" onchange=
       "fixOrder" /></p>

       <p>Total: <input type="text" id="total" name="total" value="" disabled=
       "disabled" /></p>
    </form>
</body>
</html>

3 个答案:

答案 0 :(得分:2)

您需要将onchange更改为

fixOrder()

答案 1 :(得分:2)

JS Fiddle

你的onchange事件是onchange="fixOrder",它实际上并没有做任何事情。如果您将其更改为fixOrder(),则会在触发更改事件时调用函数fixOrder


此外:

  • 我认为const是JavaScript中的保留字。我不认为JS有常量。您应该将该行从const TAX更改为var TAX;
  • parseInt不同,parseFloat采用两个参数(字符串和基数/基数),, 10只接受一个参数(字符串),因此您可以从中删除function fixOrder() { var TAX = 0.0975; var numPrice; var total; var tax; numPrice = parseFloat(document.getElementById("cost").value); tax = parseFloat(document.getElementById("tax").value); total = parseFloat(document.getElementById("total").value); numPrice = numPrice + (tax || numPrice * TAX); total = numPrice; var dec = new Number((total+'').split('.')[1]) || 0; total = document.getElementById("total").value = "$" + Number(parseInt(total) + '.' + Math.round( ( (dec+''.split('').reverse().join('') )/100 + '').split('').reverse().join('') )).toFixed(2); ); if (isNaN(numPrice)) { alert("Sorry,you must enter a numeric value to place order"); numPrice = 0; } }

我想你想要的东西是:

  <h1 align="left">Price Calculator</h1>

  <form name="form" id="form">
     <p>Price: <input type="text" id="cost" name="cost" value="" onchange="fixOrder()" /></p>

     <p>Tax: &nbsp; <input type="text" id="tax" name="tax" value="" onchange="fixOrder()" /></p>

     <p>Total: <input type="text" id="total" name="total" value="" disabled="disabled" /></p>
  </form>

这将使用您输入的美元税额,或者如果不存在,它将使用您在开头提供的常数费率(从.975更改为.0975)。

另外,请注意总计中的新计算,我们取数字的小数部分,除以100得到两位小数,然后将其反转,使其再次按正确顺序排列,然后将其四舍五入最近的1(分)。


HTML正文:

{{1}}

答案 2 :(得分:0)

通过事件在Javascript中调用函数时,需要在要调用的函数名称后面提及()。