2013-06-24 2 views
-1

자바 스크립트에 많은 문제가 있습니다. 나는 함수를 사용하여 간단한 월급 프로그램을 만들어야한다. 나는 내가 뭘 잘못하고 있는지 전혀 모른다. 또한 payratetaxrate을 10 진수 형식으로 변경해야합니다. 어떻게 코드에 삽입합니까? 내 코드는 다음과 같습니다.자바 스크립트 기능에 문제가 있습니다.

<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

10 진수 형식으로 변경하는 코드는 무엇입니까? 함수를 수정하면 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

오! 고맙습니다! 나는 그것을 지금 본다. 결국 나는 calculatepay() 대신 netpay를 사용했다. – jaramore

+0

@jaramore 업데이트를 확인하십시오.이 경우 계산 된 값에 변수'netpay'를 지정해야합니다 –

0

스크립트를 약간 업데이트했습니다. 몇 가지 작은 오류. 당신은 계산 지불 함수를 호출 할 때 bracets를 포함하지 않았고 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

도움이 되길 바랍니다.

관련 문제