1

何もしないので、コードのどこが間違っているのかわかりません...

私のjsは:

function calc()
{
    for(i=1;i<=4;i++)
    {
        document.getElementById("cost"+i).value=        (document.getElementById("pret"+i).value*document.getElementById("cant"+i).value)*1.24;
        document.biblioteca.total.value+=document.getElementById("cost"+i).value;
    }

}

htmlは次のとおりです。

<form name="biblioteca">
<table width=600 border="3">
    <tr>
        <th width="50%">Carte</th>
        <th width="15%">Pret</th>
        <th width="15%">Cantitate</th>
        <th>Cost(TVA inclus)</th>
    </tr>
    <tr>
        <td>Manuscrisul gasit la Accra - Paulo Coelho</td>
        <td id="pret1" value="20">20</td>
        <td><input type="text" value="" id="cant1"></td>
        <td><textarea name="cost1" id="cost1" rows="1" value=""></textarea></td>
    </tr>

    <tr>
        <td>Poarta coliviei - Katie Hickman</td>
        <td id="pret2" value="10">10</td>
        <td><input type="text" value="" id="cant2"></td>
        <td><textarea name="cost2" id="cost2" rows="1" value=""></textarea></td>
    </tr>
    <tr>
        <td>Cincizeci de umbre ale lui Grey - E.L. James </td>
        <td id="pret3" value="44">44</td>
        <td><input type="text" value="" id="cant3"></td>
        <td><textarea name="cost3" id="cost3" rows="1" value=""></textarea></td>
    </tr>
    <tr>
        <td>Ciresarii. Vol.2: Castelul Fetei In Alb - Constantin Chirita</td>
        <td id="pret4" value=6>6</td>
        <td><input type="text" value="" id="cant4"></td>
        <td><textarea name="cost4" id="cost4" rows="1" value=""></textarea></td>
    </tr>
    <tr>
        <td colspan=2></td>
        <td>Total:</td>
        <td><textarea name="total" rows="1" readonly value=""></textarea></td>
    </tr>
</table>

<input type="button" name="calc" value="Caluleaza" onclick="calc()">
</form>

2 列目の値を取得し、3 列目を掛けてから 1.24 を掛け、結果を 4 列目に書き込む必要があります。次に、この結果は、最後の行の合計の最後の列に要約する必要があります。しかし、それは何もしません。私はさまざまな方法を試しましたが、最初に頭に浮かんだので、これに止めました。また、object=document.getElementById("cost"+i) を割り当ててから object.value を使用しようとしましたが、同じことであり、機能しません。何が悪いのかわかりません。

コメントの後、html 全体は次のようになります。

<html>
<head>

<script type="text/javascript">
function calculate()
{
    document.biblioteca.total.value = 0;
    for(i=1;i<=4;i++)
    {
        document.getElementById("cost"+i).value= (parseInt(document.getElementById("pret"+i).innerText)*parseFloat(document.getElementById("cant"+i).value))*1.24;
        document.biblioteca.total.value = parseFloat(document.biblioteca.total.value) + parseFloat(document.getElementById("cost"+i).value);
    }
}
</script>

</head>

<body>
<h1>Biblioteca</h1>


<form name="biblioteca">
<table width=600 border="3">
    <tr>
        <th width="50%">Carte</th>
        <th width="15%">Pret</th>
        <th width="15%">Cantitate</th>
        <th>Cost(TVA inclus)</th>
    </tr>
    <tr>
        <td>Manuscrisul gasit la Accra - Paulo Coelho</td>
        <td id="pret1">20</td>
        <td><input type="text" value="" id="cant1"></td>
        <td><textarea name="cost1" id="cost1" rows="1" value=""></textarea></td>
    </tr>

    <tr>
        <td>Poarta coliviei - Katie Hickman</td>
        <td id="pret2">10</td>
        <td><input type="text" value="" id="cant2"></td>
        <td><textarea name="cost2" id="cost2" rows="1" value=""></textarea></td>
    </tr>
    <tr>
        <td>Cincizeci de umbre ale lui Grey - E.L. James </td>
        <td id="pret3">44</td>
        <td><input type="text" value="" id="cant3"></td>
        <td><textarea name="cost3" id="cost3" rows="1" value=""></textarea></td>
    </tr>
    <tr>
        <td>Ciresarii. Vol.2: Castelul Fetei In Alb - Constantin Chirita</td>
        <td id="pret4">6</td>
        <td><input type="text" value="" id="cant4"></td>
        <td><textarea name="cost4" id="cost4" rows="1" value=""></textarea></td>
    </tr>
    <tr>
        <td colspan=2></td>
        <td>Total:</td>
        <td><textarea name="total" rows="1" readonly value=""></textarea></td>
    </tr>
</table>

<input type="button" value="Caluleaza" onclick="calculate()">
</form>

</body>
</html>

非常に疲れていて明らかな愚かな間違いが見当たらないか、怪しい何かがあるかのどちらかです....まだうまくいかないからです。

4

2 に答える 2

0

<input>これらの要素によって格納される値は数値ではありません。それらは文字列です。それらを浮動小数点数または整数に変換する必要があります。

var total_element = document.biblioteca.total;

var cost_element = document.getElementById("cost" + i);
var pret_element = document.getElementById("pret" + i);
var cant_element = document.getElementById("cant" + i);

var pret = parseFloat(pret_element.value);
var cant = parseFloat(cant_element.value);

cost_element.value = pret * cant * 1.24;
total_element.value += cost_element.value;
于 2012-11-20T21:42:44.437 に答える
0

まず、入力タグから値を取得するときに、文字列値に対して計算を実行しようとしています。

また、関数名として calc() を使用できないため、関数は実行されていません(何らかの理由で)

コードをこれに置き換えてみてください。

JS:

function calculate()
{
    document.biblioteca.total.value = 0;
    for(i=1;i<=4;i++)
    {
        document.getElementById("cost"+i).value= (parseInt(document.getElementById("pret"+i).innerText)*parseFloat(document.getElementById("cant"+i).value))*1.24;
        document.biblioteca.total.value = parseFloat(document.biblioteca.total.value) + parseFloat(document.getElementById("cost"+i).value);
    }
}

HTML:

<form name="biblioteca">
<table width=600 border="3">
    <tr>
        <th width="50%">Carte</th>
        <th width="15%">Pret</th>
        <th width="15%">Cantitate</th>
        <th>Cost(TVA inclus)</th>
    </tr>
    <tr>
        <td>Manuscrisul gasit la Accra - Paulo Coelho</td>
        <td id="pret1" value="20">20</td>
        <td><input type="text" value="" id="cant1"></td>
        <td><textarea name="cost1" id="cost1" rows="1" value=""></textarea></td>
    </tr>

    <tr>
        <td>Poarta coliviei - Katie Hickman</td>
        <td id="pret2" value="10">10</td>
        <td><input type="text" value="" id="cant2"></td>
        <td><textarea name="cost2" id="cost2" rows="1" value=""></textarea></td>
    </tr>
    <tr>
        <td>Cincizeci de umbre ale lui Grey - E.L. James </td>
        <td id="pret3" value="44">44</td>
        <td><input type="text" value="" id="cant3"></td>
        <td><textarea name="cost3" id="cost3" rows="1" value=""></textarea></td>
    </tr>
    <tr>
        <td>Ciresarii. Vol.2: Castelul Fetei In Alb - Constantin Chirita</td>
        <td id="pret4" value=6>6</td>
        <td><input type="text" value="" id="cant4"></td>
        <td><textarea name="cost4" id="cost4" rows="1" value=""></textarea></td>
    </tr>
    <tr>
        <td colspan=2></td>
        <td>Total:</td>
        <td><textarea name="total" rows="1" readonly value=""></textarea></td>
    </tr>
</table>

<input type="button" name="calc" value="Caluleaza" onclick="calculcate()">
</form>
于 2012-11-20T21:49:39.887 に答える