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>

它应该取第二列的值,乘以第三列,然后乘以 1.24,并将结果写入第四列。那么,这个结果应该总结在最后一行的最后一列,总计中。但它什么也没做。我尝试了不同的方式,停在了这个,因为这是我想到的第一个。我也尝试分配 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 回答