簡體   English   中英

在數組中存儲具有不同ID的多個值-PHP,JavaScript

[英]Storing multiple values with different id in array - php,javascript

使用以下代碼輸入多個值: $c_num是輸入的計數。 輸入的數量為n個$stud['stud_c']是學生代碼,S01,S02,S05,S08,S19 .........

在javascript函數calculate() ,傳遞了一部分id。

碼:

<input type="number" required id="c_m_<?php echo $c_num; ?>_<?php echo $stud['stud_c'];?>" name="c_m_<?php echo $c_num; ?>[<?php echo $stud['stud_c'];?>]" onkeypress="calculate('<?php echo $c_num; ?>_<?php echo $stud['stud_c'];?>','<?php echo $stud['stud_c'];?>')" class="num<?php echo $c_num; ?> " >

當我提醒class1時,我正在獲取相應的輸出。 但是如何在數組中存儲具有不同ID的多個值? 如何將這些輸入值存儲在數組num []中? 我還想提醒所有這些輸入。

用於查找n個輸入之和的相應腳本:

 function calculate(class1,class2){     
    var n = parseFloat(document.getElementById('count').value);
    var num[] = parseFloat(document.getElementById('c_m_'+class1).value);
    var total=0;
    for (var i = 0; i <n; i++) {

       total = total + parseFloat(num[i]) ;
    }
     if (!isNaN(total)) {
       document.getElementById('total_mark_'+class2).value = Math.round(total);

    }
 }

像這樣嘗試

<script>
arr =[];
function calculate(class1)
{       
//var n = parseFloat(document.getElementById('count').value);
var num = parseFloat(document.getElementById('c_m_'+class1).value);
arr.push(num);
var total=0;
var n =arr.length;
for (var i = 0; i <n; i++) {

       total = total +arr[i];
}
alert(total);
}
</script>

嘗試這個 。 array.push() 。並且數組聲明是錯誤的。使用num=[]而不是num[]

我不知道為什么在forloop長度上使用n 如果您最初需要數組長度,請使用n=num.length

  var num=[]; function calculate(class1) { var n = parseFloat(document.getElementById('count').value); num.push(parseFloat(document.getElementById('c_m_'+class1).value)); var total=0; //n=num.length if you need num array length use this for (var i = 0; i <n; i++) { total = total + parseFloat(num[i]) ; } alert(total); } 

為輸入分配一個公共屬性,並通過該屬性獲取它們。 通過屬性獲取節點的方法有很多。 僅舉幾例:

 (function() { var inputs, i, total = 0; inputs = document.forms.c.querySelectorAll("input[name='c_m[]']"); for (i = 0; i < inputs.length; i++) { total += Number(inputs[i].value); } console.log(total); })(); 
 <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>XXX</title> </head> <body> <form name="c"> <input type="text" name="c_m[]" value="1" size="3" /> <input type="text" name="c_m[]" value="2" size="3" /> <input type="text" name="c_m[]" value="3" size="3" /> </form> </body> </html> 

注意,如果只想計算值的總和,則不需要將輸入值收集到num數組中。 只需對節點進行掃盲並收集其值即可。 如果出於某些原因您仍想將值收集到數組中,請使用Array.prototype.push方法:

var num = [];
for (i = 0; i < inputs.length; i++) {
  num.push(inputs[i].value);
}
<script type="text/javascript">
    var RECALCULATE = function(a,b) { 
    var rowtotal = 0;
    n = new Array();
    var count = document.getElementById('criteria_count').value;    

    for (i = 1; i <=count; i++) { 
      if (parseInt(document.getElementById('criteria_mark_'+i+'_'+b).value) > 0) {

           n[i] = parseInt(document.getElementById('criteria_mark_'+i+'_'+b).value);
           rowtotal += n[i];
       }
    }

     document.getElementById('total_mark_'+b).value = rowtotal;
};
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM