2012-11-20 63 views
1

我找不到什麼是錯在我的代碼,因爲它什麼也不做......JS麻煩從表列計算的值,並寫入到另一個,從文本輸入到文本區域

我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> 

無論是我,很累,不能看到一些明顯愚蠢的錯誤,或有貓膩....因爲還沒有工作。

回答

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; 
0

首先,當您從輸入標記中獲取值時,試圖對字符串值進行數學運算。

此外,您的功能沒有運行,因爲你不能使用計算()作爲函數名(出於某種原因)

嘗試用這種替代你的代碼。

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> 
+0

實際上是原始函數名是calculeaza,我已經試過object.value * 1想這將使INT,但似乎有仍然存在一些問題,或者只是我現在無法發現的一個愚蠢的錯誤。我已更新原始帖子。 – user1840192

相關問題