使用以下代码输入多个值:
$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);
}
}
答案 0 :(得分:1)
试试这样..
<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>
答案 1 :(得分:1)
试试这个。 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);
}
答案 2 :(得分:1)
为输入分配公共属性并通过此属性获取它们。有许多方法可以按属性获取节点。仅举几例:
parentNode.getElementsByClassName('className')
获取具有特定class
属性的所有子节点; parentNode.querySelectorAll('input[attribute="value"]')
获取具有特定input
值的所有attribute
代码的节点列表'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);
})();
&#13;
<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>
&#13;
注意,如果您只想计算值的总和,则不需要将输入值收集到num
数组中。只需识别节点并收集它们的值即可。如果由于某种原因您仍想将值收集到数组中,请使用Array.prototype.push
方法:
var num = [];
for (i = 0; i < inputs.length; i++) {
num.push(inputs[i].value);
}
答案 3 :(得分:0)
<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>