有一html表单,里面的项目都是通过js数组产生的,产生后的html代码如下:<form name="form1" id="form1">
<input name="q1" value="1" type="text" />
<input name="q2" value="2" type="text" />
<input name="q3" value="3" type="text" />
……
<input name="qn" value="N" type="text" /><br>
总合:<input type="text" name="zongheji" id="zongheji" onclick="zonghe();"  />
</form>要求:单击最下面求和的text后,将表单中从q1到qn(n不确定,如10,100,1000……都有可能)的值相加,总合赋给id="zongheji"的text有一个问题:如果这个js是一个数组,删除了其中一个比如删除了q2这个text,如何统计类似q1,q3……qn的值呢?

解决方案 »

  1.   

    function zonghe() {
    var inputs = document.getElementById("form1").getElementsByTagName("input");
    var sum = 0;
    for (var i = 0; i < inputs.length; i++) {
    if (/^q\d+$/.test(inputs[i].name)) {
    sum += +inputs[i].value;
    }
    }
    document.getElementById("zongheji").value = sum;
    }
      

  2.   

    如果form中有好几个input对象,这样会不会导致把其他的text的值也取来合计了?如表单为:
    <form name="form1" id="form1">
    <input name="q1" value="1" type="text" />
    <input name="q2" value="2" type="text" />
    <input name="q3" value="3" type="text" />
    ……
    <input name="qn" value="N" type="text" /><input name="w1" value="1" type="text" />
    <input name="w2" value="2" type="text" />
    <input name="w3" value="3" type="text" />
    ……
    <input name="wn" value="N" type="text" />
    <br>
    总合:<input type="text" name="zongheji" id="zongheji" onclick="zonghe();"  />
    </form>
      

  3.   

    if (/^q\d+$/.test(inputs[i].name)) // 这个判断过滤name属性的,只有q开头数字结尾才处理。
    测试的结果既真理,有时间问,不如拿时间测
      

  4.   

    呵呵,“有一html表单,里面的项目都是通过js数组产生的”
    既然如此,生成时就应该一并生成求和函数!现在不应该补充求和函数,而是应该修改生成函数!
      

  5.   

    我做的是用js数组成的表单,然后需要等待客户端录入值了才能求和。。也许思路不对。。测试ing..