Javascript函数故障

Javascript函数故障,javascript,function,Javascript,Function,我在javascript方面遇到了很多麻烦。我应该用这个函数做一个简单的工资支票程序。我不知道我做错了什么。我还必须将payrate和taxrate更改为十进制格式。你怎么把它写成代码?下面是我的代码 <html> <body bgcolor="#81DAF5"> <head> <title>Chapter 4 Assignment 1</title> </head> <body>

我在javascript方面遇到了很多麻烦。我应该用这个函数做一个简单的工资支票程序。我不知道我做错了什么。我还必须将
payrate
taxrate
更改为十进制格式。你怎么把它写成代码?下面是我的代码

<html>
  <body bgcolor="#81DAF5">
  <head>
    <title>Chapter 4 Assignment 1</title>
  </head>
  <body>
    <script type="text/javascript">
      var hoursworked = window.prompt("How many hours worked?", "");
      var payrate = window.prompt("What is the pay rate?", "");
      var taxrate = window.prompt("What is the tax rate?", "");
      var netpay
      parseFloat(payrate).toFixed(2);
      parseFloat(taxrate).toFixed(2);
      function calculatepay()
      {
        var grosspay= hoursworked * payrate;
        var taxamount= (grosspay * taxrate) / 100;
        var netpay= grosspay - taxamount;
        return netpay;
      }

      document.write("<h1><b>Hours Worked: " +hoursworked+ "<br></h1></b>");
      document.write("<h1><b>Hourly payrate: " +payrate+ "<br></h1></b>");
      document.write("<h1><b>Tax rate applied: " +taxrate+ "<br></h1></b>");
      document.write("<h1><b>Net Pay = " +calculatepay+ "<br></h1></b>");
    </script>
  </body>
</html>

第四章作业1
var hoursworked=window.prompt(“工作了多少小时?”,“”);
var payrate=window.prompt(“工资率是多少?”,“”);
var taxrate=window.prompt(“税率是多少?”,“”);
var净支付
浮动工资率。固定工资率(2);
分类浮动(税率)。固定(2);
函数calculatepay()
{
var grosspay=工作小时数*工资率;
var taxamount=(格罗斯佩*税率)/100;
var netpay=总收入-税额;
退回网付;
}
文件。填写(“工作小时数:+hoursworked+”
”; 文件。填写(“小时工资率:“+payrate+”
”; 文件。填写(“适用税率:“+taxrate+”
”; 文件。填写(“净工资=”+calculatepay+“
”;
谢谢您的更新。虽然
parseFloat(payrate).toFixed(2)
似乎确实将存储的值转换为float,但它存储的是答案

此外,在任何情况下,您可能都应该将结果分配给另一个变量或返回到
payrate
,否则浮点/字符串将丢失

尝试:

然后在
calculatepay()
函数中:

// neat trick at http://stackoverflow.com/a/5661399/1091386
// allows you to use a string as a float in addition/subtraction
// apparently not necessary with multiplication but I thought I'd leave it in

var taxamount = hoursworked * +(payrate);
最后,不要忘了在最后用
()
调用
calculatepay()
,否则在使用 parseFloat(payrate).toFixedString(2);
实际值没有改变。

代码中几乎没有问题

  • 解析输入字符串后,需要将返回值赋回变量ex
    payrate=parseFloat(payrate).toFixed(2)
  • 您需要通过在末尾添加
    ()
    来调用函数
    calculatepay
    ,以打印结果
  • 试一试

    var hoursworked=window.prompt(“工作了多少小时?”,”);
    var payrate=window.prompt(“工资率是多少?”,“”);
    var taxrate=window.prompt(“税率是多少?”,“”);
    工资率=浮动工资率(工资率)。toFixed(2);
    taxrate=parseFloat(taxrate).toFixed(2);
    函数calculatepay()
    {
    var grosspay=工作小时数*工资率;
    var taxamount=(格罗斯佩*税率)/100;
    var netpay=总收入-税额;
    退回网付;
    }
    var netpay=calculatepay();
    文件。填写(“工作小时数:+hoursworked+”
    ”; 文件。填写(“小时工资率:“+payrate+”
    ”; 文件。填写(“适用税率:“+taxrate+”
    ”; 文件。写入(“净支付=“+netpay+”
    ”;

    演示:

    我已经为您更新了一点脚本。一些小错误。调用calculate pay函数时没有包含大括号,也没有存储应用parseFloat方法的结果

    应用括号给出:

    document.write("<p>Net Pay = " + calculatepay() + "</p>"); 
    
    另外,您不需要单独声明每个变量,您可以将它们作为一个组来完成,只需用逗号分隔即可:

    var hoursworked = window.prompt("How many hours worked?", ""),
        payrate = window.prompt("What is the pay rate?", ""),
        payrate = parseFloat(payrate).toFixed(2),
        taxrate = window.prompt("What is the tax rate?", ""),
        taxrate = parseFloat(taxrate).toFixed(2),
        netpay = 0;
    
    以下是一个工作示例-


    希望这有帮助

    在哪里定义了
    hours worked
    payrate
    taxrate
    ?您对返回值做了什么?您遇到了什么问题?程序首先向用户发出提示。说“工作了多少小时,你的工资是多少,税率是多少?”好的,但什么是“不工作”
    parseFloat
    不转换输入,只返回转换后的结果。将其更改为十进制格式的代码是什么?如何修复该函数,使netpay不会在输出时未定义。只需将它们还原为自己的变量,如:Payrate=parseFloat(Payrate).toFixedString(2)噢!非常感谢。我现在看到了。最后,我使用了netpay而不是calculatepay()。@jaramore请查看更新,在这种情况下,您需要将计算值分配给变量
    netpay
    document.write("<p>Net Pay = " + calculatepay() + "</p>"); 
    
    payrate = parseFloat(payrate).toFixed(2);
    taxrate = parseFloat(taxrate).toFixed(2);
    
    var hoursworked = window.prompt("How many hours worked?", ""),
        payrate = window.prompt("What is the pay rate?", ""),
        payrate = parseFloat(payrate).toFixed(2),
        taxrate = window.prompt("What is the tax rate?", ""),
        taxrate = parseFloat(taxrate).toFixed(2),
        netpay = 0;