-1

私は税金計算機に取り組んでいますが、うまくいきません。得られる唯一の結果は NaN であり、コードの何が問題なのかを見つけることができません。ユーザーの入力が 450,000 以上の場合、出力は給与の 32%、それ以外の場合は 28% であると想定されます。

<!doctype html>
<html lang="en">
   <head>
     <meta charset="utf-8">  
     <meta name="description" content="Skatt">
     <meta name="author" content="Gandalf">  
     <title>Taxes</title>
   </head>
<body>
    <input type="text" id="salary" value="0" />
    <button id="button">Calculate tax!</button>
    <h2 id="salaryOut">Your salary is NOK:</h2>
    <h2 id="taxOut">You should pay taxes with the amount of:</h2>

<script>
    var button = document.getElementById("button");

    button.onclick = function() {

    var salary = document.getElementById("salary");
    salary.value = 0;

    var salaryOut = document.getElementById("salaryOut");
    salaryOut.value = salary;

    var salaryOut = document.getElementById("taxOut");
    taxOut.value = parseFloat(salaryOut.value);

    if(salaryOut.value<450000) {
        taxOut.value = salaryOut.value * .28;
    } 
    else {
        taxOut.value = salaryOut.value * .32;
    }
        salaryOut.innerHTML = ("Your salary is NOK: " + salary.value + ",-");   
        skattUt.innerHTML = "You should pay NOK: " + taxOut.value + ",-";
    }           
</script>   
</body>
</html>
4

1 に答える 1

2

計算する実際の値がない場合、ページが読み込まれるとすぐにすべての計算を実行します。ハンドラーで行っていることは、既に計算された値を表示することだけです。click

ページが最初に読み込まれたときに計算する値がなかったので、その結果はNaNです。

すべてのロジックをクリック ハンドラーに配置します。

var knapp = document.getElementById("knapp");

knapp.onclick = function() {

    var lonn = document.getElementById("lonn");

    var lonnUt = document.getElementById("lonnUt");
    var skattUt = document.getElementById("skattUt");

    var result = 0;

    if(lonn.value<450000) {
        result = lonn.value * .28;
    } 
    else {
        result = lonn.value * .32;
    }

    lonnUt.innerHTML = ("Lønnen din er kr: " + lonn.value + ",-");  
    skattUt.innerHTML = "Skatten din er kr: " + result + ",-";
}

こうすることで、数値の計算を実行する前に、ユーザーに数値を入力する機会を与えることができます。

(注:あなたがやろうとしていることの実際のロジックを解読するのに苦労しているので、これを再編集し続けています。私はその言語を話さないので、変数名は役に立ちません。確かにここにも他の問題がある可能性があります.しかし、主な問題は、ユーザーが値を入力する前ではなく、入力した後に計算を実行する必要があることです.)

編集:別の重大な問題を見つけた後、ここでコードをさらに変更しました。存在しない要素の.valueプロパティにアクセスしようとしました。h2また、変数であるかのように、これらの要素に情報を格納しようとしていました。

代わりに、計算結果を格納する変数を宣言するだけです。入力を取得し ( lonn)、計算を実行して結果を取得し ( result)、出力を HTML 要素に書き込みます (lonnUtおよびskattUt)。

于 2015-10-15T15:16:23.317 に答える