2014-01-28 32 views
-6

我的任務是我的程序是當一個記錄在文本框中過濾,如果我改變數字,它會自動改變總數並在(總)文本框中計算...任何人都可以幫助我什麼是錯誤的我的代碼?我永遠不會循環的文本框,因爲我有它的計劃。計算來自文本框的輸入數字

的html代碼:

<form id="frm" name="frm" /> 
<table> 
<tr> 
<td> 
Name: <br /> 
<input type="text" name="name" value="<?php if(empty($name[0])){$name[0] = array(NULL);}else{echo $name[0];} ?>" readonly onClick="optTotal()" /> <br /> 
</td> 
<td> 
Score 1: <br /> 
<input type="text" name="optA" value="<?php if(empty($score1[0])){$score1[0] = array(NULL);}else{echo $score1[0];} ?>" onkeypress="return isnumeric(event)" onClick="optTotal()" /> <br /> 
</td> 
<td> 
Score 2: <br /> 
<input type="text" name="optB" value="<?php if(empty($score2[0])){$score2[0] = array(NULL);}else{echo $score2[0];} ?>" onkeypress="return isnumeric(event)" onClick="optTotal()" /> <br /> 
</td> 
<td> 
Score 3: <br /> 
<input type="text" name="optC" value="<?php if(empty($score3[0])){$score3[0] = array(NULL);}else{echo $score3[0];} ?>" onkeypress="return isnumeric(event)" onClick="optTotal()" /> <br /> 
</td> 
<td> 
Score 4: <br /> 
<input type="text" name="optD" value="<?php if(empty($score4[0])){$score4[0] = array(NULL);}else{echo $score4[0];} ?>" onkeypress="return isnumeric(event)" onClick="optTotal()" /> <br /> 
</td> 
<td> 
Total: <br /> 
<input type="text" name="total" value="<?php if(empty($total[0])){$total[0] = array(NULL);}else{echo $total[0];} ?>" readonly onKeyUp="optTotal()" /> <br /> 
</td> 
</form> 

腳本總:

<script> 
function optTotal() 
{ 
    var a1 = document.querySelector('select[name="optA"]'); 
    var b1 = document.querySelector('select[name="optB"]'); 
    var c1 = document.querySelector('select[name="optC"]'); 
    var d1 = document.querySelector('select[name="optD"]'); 

    if (a1.value && a1.value != "") 
     a1 = parseFloat(a1.value); 
    else 
     a1 = 0; 

    if (b1.value && b1.value != "") 
     b1 = parseFloat(b1.value); 
    else 
     b1 = 0; 

    if (c1.value && c1.value != "") 
     c1 = parseFloat(c1.value); 
    else 
     c1 = 0; 

    if (d1.value && d1.value != "") 
     d1 = parseFloat(d1.value); 
    else 
     d1 = 0; 

     document.getElementById("total").value = parseFloat(a1)+parseFloat(b1)+parseFloat(c1)+parseFloat(d1); 

} 
</script> 

的問題是,如果我改變對(OPTA)至(optD)文本框的數字它不是計算。

+0

請註明您正確的問題? –

+0

@Anand Somasekhar問題是它不計算如果我改變文本框上的數字。 – user3235574

回答

2

使用這種上onchange事件

function optTotal() { 
     var a1 = document.forms[0].optA; 
     var b1 = document.forms[0].optB; 
     var c1 = document.forms[0].optC; 
     var d1 = document.forms[0].optD; 
     if (a1.value && a1.value != "") 
      a1 = parseFloat(a1.value); 
     else 
      a1 = 0; 

     if (b1.value && b1.value != "") 
      b1 = parseFloat(b1.value); 
     else 
      b1 = 0; 

     if (c1.value && c1.value != "") 
      c1 = parseFloat(c1.value); 
     else 
      c1 = 0; 

     if (d1.value && d1.value != "") 
      d1 = parseFloat(d1.value); 
     else 
      d1 = 0; 


     var total = a1 + b1 + c1+d1; 
     document.forms[0].total.value = total; 
     } 
+0

謝謝你這麼友善的T_T – user3235574