2013-06-24 89 views
-1

我对javascript有太多的麻烦。我应该使用函数来制作一个简单的薪水检查程序。我不知道我在做什么错。我也必须将payratetaxrate更改为十进制格式。你如何把它放在代码中?这是我的代码的样子。Javascript函数问题

<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> 
+2

'hoursworked','payrate'和'taxrate'在哪里定义?你在做什么回报价值? –

+0

你有什么问题? – SLaks

+0

该程序开始向用户询问提示。说“工作了多少小时,你的工资率是多少,税率是多少?” – jaramore

回答

0

感谢您的更新。虽然parseFloat(payrate).toFixed(2)确实似乎将存储的值转换为浮点数,但它将存储答案as a string

此外,您应该将结果分配给另一个变量,或者在任何情况下返回payrate,否则float/string将会丢失。

尝试:

payrate = parseFloat(payrate).toFixed(2); 
taxrate = parseFloat(taxrate).toFixed(2); 

,然后在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()或者你只是返回功能。

0

当您使用 parseFloat(payrate).toFixedString(2); 实际值不变。

+0

将它们更改为十进制格式的代码是什么?我如何修复这个函数,所以netpay在输出时不会被定义。 – jaramore

+0

只需将它们恢复到自己的变量,如: Payrate = parseFloat(payrate).toFixedString(2) –

1

有在代码中几个问题

  1. 解析输入字符串后,您需要返回的值分配回变量前payrate = parseFloat(payrate).toFixed(2);
  2. 你需要通过加入()调用该函数calculatepay最终打印结果

尝试

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?", ""); 
    payrate = parseFloat(payrate).toFixed(2); 
    taxrate = parseFloat(taxrate).toFixed(2); 
    function calculatepay() 
    { 
    var grosspay= hoursworked * payrate; 
    var taxamount= (grosspay * taxrate)/100; 
    var netpay= grosspay - taxamount; 
    return netpay; 
    } 

    var netpay = calculatepay(); 

    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 = " +netpay+ "<br></h1></b>"); 

演示:Plunker

+0

哦!谢谢!我现在看到它。最后我用netpay代替calculatepay()。 – jaramore

+0

@jaramore查看更新,在这种情况下,您需要将计算值分配给变量'netpay' –

0

我已经为您更新了脚本。一些小错误。在调用计算支付函数时,您没有包含支架,而且您也没有存储应用parseFloat方法的结果。

应用括号给出:

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; 

这里是一个工作示例 - http://jsfiddle.net/2UVyH/2

希望可以帮到