在数组中存储具有不同id的多个值 - php,javascript

时间:2017-01-06 04:28:37

标签: javascript php html arrays

使用以下代码输入多个值: $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);

    }
 }

4 个答案:

答案 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)

为输入分配公共属性并通过此属性获取它们。有许多方法可以按属性获取节点。仅举几例:

示例

&#13;
&#13;
(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;
&#13;
&#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>