如下表单<form name="form1" onsubmit="getotalnum();">
<input type="hidden" value="0" name="totalnum" id="totalnum">
<input type="text" name="a1" value="A">
<input type="text" name="a2" value="B">
<input type="text" name="a3" value="C">
……
<input type="text" name="aN" value="N">
</form>js:
<script>
function getotalnum(){
//这里的循环的函数应该怎么写?
document.getElementById('totalnum').value+=1;
}
</script>
Q:如何在提交表单的时候,通过函数getotalnum,将表单内,从a1到aN,只要value不为空的text项目总数统计出来?
也就是,在表单form1中,有a1到aN个text,只要输入了值,就给表单中隐藏属性的totalnum赋值,每次+1?如:a1不为空,提交表单时,totalnum+1 ,a2不为空,totalnum+1+1一直循环到an?

解决方案 »

  1.   


    function getotalnum(){ 
      for (var i=1;i<=N;i++){
        if (document.getElementById('a'+i).value.length>0)
          document.getElementById('totalnum').value+=1; 
      }
    }
      

  2.   

    ls兄弟,好像不能统计到?表单中name都已经更改成id了
      

  3.   


    for(var i=1;i<=4;i++) {
      var tmp = document.getElementById("a" + i).value;
      if (tmp!=""){
        document.getElementById('totalnum').value+="1"; 
      }
    }
    alert(document.getElementById('totalnum').value);
    }
      

  4.   

    LZ把循环里的4换成N,不知道能不能满足你啊。。
      

  5.   

    那就看你怎么传过来了,如果是jsp,那么这样赋值var n = <%request.getAttribute("n")%>;
      

  6.   

    怎么传过来?没理解呵呵其实我是想说,如果一个表单中有n个项目,这个n是不确定的,代表这个表单中a1到an,是不确定的个数,
    怎么去统计这些不确定的项目?
      

  7.   

    用循环遍历啊,像你这个N是多少是没有关系的,如果你想说N个元素,元素类型不确定,那么就判断一下
    document.getElementById('elementName').type=="text"
      

  8.   


    var inputs = document.getElementsByName('form1')[0].getElementsByTag('input'),
        total = 0;
    for(var i = 1, len = inputs.length; i <= len; i++) {
        if(inputs[i].type == 'text' && inputs[i].value != '') total++;
    }
    document.getElementById('totalnum').value = total;
      

  9.   


        <div id="myDiv">
            <input type=text />
            <input type=text />
            <input type=text />
            <input type=text />
            <input type=text />
            <input type=text />
            <input type=text />
            <input type=text />
            <input type=text />
            <input type=text />
        </div>
        <div>
            <input type=button value="Click here" onclick="getTotalNum();" />
            <input type=text id="hidden" />
        </div>        function getTotalNum() {
                var totalNum = 0;
                var allText = document.getElementById("myDiv").getElementsByTagName("input");
                for (var i = 0, l = allText.length; i < l; i++) {
                    if (allText[i].value.length > 0) totalNum++;
                }
                document.getElementById("hidden").value = totalNum;
            }
      

  10.   

    ls,如果有很多input,这样会出问题吗?
      

  11.   

    myDiv是容纳所有需要被你统计的的容器,我是按照最简单想法来做。
      

  12.   

    一楼是我举例的表单,如果一个表单,如:
    <form>
    <input id="a1" type="text" value="A">
    <input id="b1" type="checkbox" value="B">
    <input id="c1" type="radio" value="true">
    ……
    </form>这样会不会把所有对象都统计在内了?
      

  13.   

    实际上我只要取a1到aN,不需要其他的内容的,但是如果在一个div内,会不会导致全部对象都被取值了?
    如果用 var allText = document.getElementById("myDiv").getElementsByTagName("input");
    这句的话?