注册 登录
编程论坛 ASP技术论坛

循环相加的问题

guang2356447 发布于 2010-07-27 15:59, 1077 次点击
用js 怎么循环读取8个文本框的值(也可以能是9个10个..更多)  并让这些值相加

以下是我的js代码      但是 是固定的5个文本框的值cc1-cc5   怎么改成循环读取的那   比如可能是8个input  或者更多
<script language="javascript">
function calpay(){
frmx = document.form1;
obj = frmx.cc1
for(var i= 0;i< obj.length;i++){
frmx.heji[i].value=frmx.cc1[i].value*1+frmx.cc2[i].value*1+frmx.cc3[i].value*1+frmx.cc4[i].value*1+frmx.cc5[i].value*1
}
}
</script>

[ 本帖最后由 guang2356447 于 2010-7-27 16:02 编辑 ]
12 回复
#2
gupiao1752010-07-27 20:36
<script language="javascript">
function calpay(){
var obj=document.getElementsByTagName('input');
var result=document.getElementById('jieguo');
var str="";
     for(var i= 0;i< obj.length;i++)
      {
       str+=obj[i].value;
      }
    result.value=str;
}
</script>
<input type="text"/>
...N个文本框
<input type="text"/>
<input type="button" onclick="calpay();" value="统计"/>
<span id="jieguo"></span>
#3
guang23564472010-07-28 09:27
用你这个代码
<p>
<script language="javascript">
function calpay(){
var obj=document.getElementsByTagName('input');
var result=document.getElementById('jieguo');
var str="";
     for(var i= 0;i< obj.length;i++)
      {
       str+=obj[i].value;
      }
    result.value=str;
}
</script>
  <input name="q" type="text" id="q" onkeyup='calpay()' onkeydown='calpay()'/>
  </p>
<p>
  <input name="qq" type="text" id="qq" onkeyup='calpay()' onkeydown='calpay()'/>
  </p>
<p>
  <input name="qqq" type="text" id="qqq" onkeyup='calpay()' onkeydown='calpay()'/>
  </p>
<p>
  <input name="qw" type="text" id="qw" onkeyup='calpay()' onkeydown='calpay()'/>
</p>
<p>
  <input name="qwe" type="text" id="qwe" onkeyup='calpay()' onkeydown='calpay()'/>
</p>
<p>
  <input name="jieguo" type="text" id="jieguo" readonly="readonly"/>
</p>
比如我每个文本框输入5    显示的是55555   应该是25      

还有个问题  比如我在第一个文本框输入5后     在jieguo那个文本框就显示5      怎么实现    我再次输入5后    jieguo那个文本框也同时显示那  清楚也一样

怎么改啊

[ 本帖最后由 guang2356447 于 2010-7-28 09:35 编辑 ]
#4
guang23564472010-07-28 09:40
还有你这个是循环所有的文本框啦

我的文本框是以行为标准的   比如一行5个  也可以8个  9个  
第二行和第一行数量一样     每一行有一个合计的文本框 显示当前行的总和
#5
冰镇柠檬汁儿2010-07-28 10:16
回复 4楼 guang2356447
js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方 法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.
<html xmlns="http://www. >
<head>
    <title>Untitled Page</title>
    <script language="javascript">
        function calpay() {
            var jieguo = 0;
            for (var i = 1; i <= 5; i++) {
                jieguo += parseInt(document.getElementById('q' + i).value);
            }
            document.getElementById('jieguo').value = jieguo;
        }
    </script>
</head>
<body>
  <input name="q1" type="text" id="q1" />+
  <input name="q2" type="text" id="q2" />+
  <input name="q3" type="text" id="q3" />+
  <input name="q4" type="text" id="q4" />+
  <input name="q5" type="text" id="q5" />=
  <input name="jieguo" type="text" id="jieguo" readonly="readonly" />
  <input type="button" value="计算" onclick="calpay();" />
</body>
</html>
#6
guang23564472010-07-28 10:29


能不能帮忙改成    这样的

就是我在第一个文本框输入的时候  合计直接显示结果啊  在第二个输入直接显示前2个的和  而不是等输入完后 再点按钮来计算结果

还有能不能是改成无限文本框
#7
guang23564472010-07-28 10:44
我粘上我的代码给大家看
<script language="javascript">
function calpay(){
frmx = document.form1;
obj = frmx.cc1
for(var i= 0;i< obj.length;i++){
frmx.heji[i].value=frmx.cc1[i].value*1+frmx.cc2[i].value*1+frmx.cc3[i].value*1+frmx.cc4[i].value*1+frmx.cc5[i].value*1
}
}
</script>

cc1-cc5 代表  尺寸1-尺寸5
怎么改成无限制的   比如要加尺寸6  尺寸7
#8
冰镇柠檬汁儿2010-07-28 11:15
改成无限的,你就加文本框,然后改下循环上限不就可以了吗?这个不难吧。
我是用了onclick的事件,只是懒得写那么多代码而已,你可以自己改到文本框里调用啊,没问题的,随你喜欢,愿意用什么事件都可以,这个应该也不难吧。
总之思路都给你了,做人不要太懒哦

[ 本帖最后由 冰镇柠檬汁儿 于 2010-7-28 11:22 编辑 ]
#9
guang23564472010-07-28 14:13
这样可以算出来啦    单只能算出第一行的总和

还有其他行那   第二行  第三行  没反应啊
    <script language="javascript">
        function calpay() {
            var heji = 0;
            for (var i = 1; i <= "<%=session("aa")%>"; i++) {
                heji += parseInt(document.getElementById('cc' + i).value);
            }
            document.getElementById('heji').value = heji;
        }
    </script>
<%
session("aa")=6
%>
#10
冰镇柠檬汁儿2010-07-28 16:45
早说啊,这样就可以了啊
    <script language="javascript">
        function calpay(t, res) {
            var heji = 0;
            for (var i = 1; i <= "<%=session("aa")%>"; i++) {
                heji += parseInt(document.getElementById(t + i).value);
            }
            document.getElementById(res).value = heji;
        }
    </script>
每一行传一个相同的值就行了
#11
gupiao1752010-07-28 17:00
冰镇柠檬汁儿已经说得好清楚了,楼主自己多动手实际操作下吧,思路都在上面写着了。
#12
guang23564472010-07-28 17:40
我搞定啦    给大家看看    多谢各位

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.
<html xmlns="http://www.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>

<%
a=split("aa,bb,cc,dd,ee",",")
b = split("44,55,66,77,88",",")

%>
<form id="form1" name="form1" method="post" action="">
  <table width="100" border="0" cellpadding="3" cellspacing="1" bgcolor="#000000">
    <tr>
      <td bgcolor="#FFFFFF">&nbsp;</td>
      <%for z = 0 to ubound(b)%>
      <td bgcolor="#FFFFFF"><%=b(z)%></td>
      <%next%>
      <td bgcolor="#FFFFFF">&nbsp;</td>
    </tr>
  <%
  for i = 0 to ubound(a)
  %>
    <tr>
      <td bgcolor="#FFFFFF"><%=a(i)%></td>
      <%for z = 0 to ubound(b)%>
      <td bgcolor="#FFFFFF"><input type="text" name="aa" id="aa" dd="<%=a(i)%>" onkeyup="calpay('<%=z%>','<%=i%>','<%=a(i)%>');" onkeydown="calpay('<%=z%>','<%=i%>','<%=a(i)%>');" /></td>
      <%next%>
      <td bgcolor="#FFFFFF"><input type="text" name="bb" id="bb" dd="<%=a(i)%>"/></td>
    </tr>
   <%next%>
  </table>
</form>


<script language="javascript">

    function calpay(a,b,ddx){

    form = document.form1;
   
    var obj = form.aa
    var xx = 0
    for(var i = 0;i<obj.length;i++){
        
        if (obj[i].getAttribute("dd")==ddx){
            xx += obj[i].value * 1
            //alert(obj[i].value)
            
            }
        }
    document.form1.bb[b].value = xx
}


</script>

</body>
</html>


#13
gupiao1752010-07-28 22:40
好样的!
1