-7

電気単位計算機を構築しようとしています。開発しましたが、自分のコードに満足していません。この電卓を開発する他の方法はありますか。

以下は私のコードです:

HTML

<input name="" type="text" value="" onblur="check()" id="bill" />

脚本

<script>
    function check()
    {
    var a=0,b=0,c=0;
    var tot = 0;
    var tot1=0;
    var tot2=0;
    var tot3=0;

    var a = document.getElementById('bill').value;

    if(a>200)
    {
        b = a - 200;
        alert('b is: '+b);
        if(b>200)
        {
        c= b-200;
        alert('c is: '+c);
        tot1 = 200*4;
        tot2 = 200*5;
        tot3 = c*6;
        tot = tot1 + tot2 + tot3;
        alert(tot);
        }
        else
        {

        tot1 = 200*4;
        tot2 = b*5;
        tot3 = c*6;
        tot = tot1 + tot2 + tot3;
        alert(tot);

        }
    }
    else
    {
        tot = a*4;
        alert(tot);

    }
    }

</script>

友達を助けてください..:)

4

5 に答える 5

2
<script>
     function check()
    {
    var a=0,b=0,c=0;
    var tot = 0;
    var tot1=0;
    var tot2=0;
    var tot3=0;

    var a = parseFloat(document.getElementById('bill').value);

    if(a>200)
    {
        tot1 = 200*4;
        b = a - 200;
        alert('b is: '+b);
        if(b>200)
        {
        c= b-200;
        alert('c is: '+c);
        tot2 = 200*5;
        tot3 = c*6;
        tot = tot1 + tot2 + tot3;
        alert(tot);
        }
        else
        {

        tot1 = 200*4;
        tot2 = b*5;
        tot3 = c*6;
        tot = tot1 + tot2 + tot3;
        alert(tot);

        }
    }
    else
    {
        tot = a*4;
        alert(tot);

    }
    }
</script>
<input name="" type="text" value="" onblur="check()" id="bill" />

私はこれでうまくいくと思います:)

于 2013-03-11T10:39:18.167 に答える
2

コードは分離する必要があります。また、コメントは、他の人がコードの目的を理解するのに役立ちます。1つの実際の例を次に示します。

function check() 
{   var initialRate = 4; // electricity charged at this rate below 200
    var standardRate = 5; // amount of electricity between 200 and 400 charged at this rate
    var overageRate = 6; // the part of electricity usage over 400 at this rate
    var electricityUsage = +document.getElementById('bill').value; // convert String to Number

    if (isFinite(electricityUsage) || electricityUsage < 0) {
        alert('The number entered was invalid, or was less than 0.');
        return;
    }

    // calculates the total
    alert(
        electricityUsage > 400
        ? initialRate * 200 + standardRate * 200 + overageRate * (electricityUsage - 400)
        : electricityUsage > 200
            ? initialRate * 200 + standardRate * (electricityUsage - 200)
            : initialRate * electricityUsage
    );
}
于 2013-03-11T10:57:04.273 に答える
1

これを試して:

function check()
{
    // Algorithm
    // Slabs : 200 | 400 | ...
    // Amoun :  4  |  5  |  6

    slabs = [200, 400]
    rate = [4, 5, 6]

    var total = document.getElementById('bill').value;

    // Over the head
    if (total > slabs[1]) {
        amount = slabs[0] * rate[0] + (slabs[1] - slabs[0]) * rate[1] + (total - slabs[1]) * rate[2];
    } else if (total > slabs[0]) {
        amount = slabs[0] * rate[0] + (total - slabs[0]) * rate[1];
    } else {
        amount = total * rate[0];
    }

    alert("Total charge: " + amount);
}
于 2013-03-11T10:41:36.323 に答える
1

やっと手に入れたと思います。3 つの電荷バンドがあり、値のどの部分が各バンドにあるかを知る必要があります。次に、各バンドの金額に適切な乗数を適用する必要があります。

私が正しければ、コードは非常に単純です。

function check() {
    var a = Number(document.getElementById('bill').value);
    var n = 200;
    var tot1 = Math.min(n, a);
    a = a - n;
    var tot2 = Math.max(0, Math.min(n, a));
    a = a - n;
    var tot3 = Math.max(0, a);
    return tot1 * 4 + tot2 * 5 + tot3 * 6;
}

より多くのバンドがある場合はループで計算を行いますが、3 つのバンドの場合はこれで十分です。

注: この関数は、計算された合計を返します。

于 2013-03-11T11:32:50.270 に答える
0

これを参照してください:サンプル

function check()
{
    var tot = 0,tot1=0,tot2=0,tot3=0;
    var a = document.getElementById('bill').value;
    tot1 = (a<=200) ? (a * 4) : 800;
    tot2 = (a<=400) ? ((a-200) * 5): 1000;
    tot3 = (a-400) > 0 ? ((a-400) * 6): 0;
    tot = tot1 + tot2 + tot3;
    var msg = "Total Charge: "+tot+"\n Details\n < 200        : "+tot1;
        msg += (tot2 != 0) ? "\n200 to 400 : "+tot2 : "";
        msg += (tot3 != 0) ? "\n>400          : "+ tot3 : "";
    alert(msg);
}
于 2013-03-11T11:26:23.230 に答える