[英]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); }
為輸入分配一個公共屬性,並通過該屬性獲取它們。 通過屬性獲取節點的方法有很多。 僅舉幾例:
parentNode.getElementsByClassName('className')
獲取具有特定class
屬性的所有子節點; parentNode.querySelectorAll('input[attribute="value"]')
獲取具有特定attribute
值的所有input
標簽的節點列表 'input[attribute="value"]'
例
(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.