我做的是一个表单验证:表单如下:
http://p13.freep.cn/p.aspx?u=v20_p13_p_0812211726464840_0.gif本页面中可录入账单所涉及的各个部门的具体金额录入,该页面中的动态表格将根据确认选择自动计算出该账单的总金额。 
也就是说,只有当确认选择后,sum框就会根据勾选行的数值自动计算数额。问题是,部门、金额、confirm里的内容,部门是数据库里面出来的,部门、金额、confirm是通过语句打出来的,金额、confirm的名字也是通过语句“C”+i和“T”+i,打出来的。
使用JS计算sum,这样导致求sum时缺少对象,怎么样要怎么办啊?打表单语句:

        int x = list.size();   //list 为含有多由部门情况的list
for (int i = 0; i < x; i++) {
Dept dept = (Dept) list.get(i);
str += "<tr><td width='50%' align='center'>"
+ dept.getDept_name()
+ "</td><td width='50%' align='center'><input type='text' name='T"
+ i
+ " size='20' value=''>$</td><td width='50%' align='center'><input type='checkbox' name='C"
+ i + " value='on' onclick='getSum()'></td></tr>";
}JS验证:
function getSum() 
{
t = 0;
for (i = 0; i < <%=x%>; i++) {
if (document.all("C" + i).checked) {
t += parseFloat(doucment.all("T") + i);
document.all.sum.value = t;  //此为设置sum的值
}
    }
}

解决方案 »

  1.   


    function getSum() 
    {
        var a="<%=x%>"; 
        t = 0;
        for (i = 0; i < a; i++) {
            if (document.all("C" + i).checked) {
                t += parseFloat(eval(document.all("T").value) + i);
                document.all.sum.value = t;  //此为设置sum的值
            }
        }
    }
      

  2.   


    不是你说的这个问题啊,我那样应该也没错的。我想问题是应该在document.all("C" + i) 这块吧,可能是我表单从数据库获取再打出来,导致缺少了对象了吧,是不是JS验证比较早啊?我直接一个表单,用这个JS验证获取sum的值是一点问题都没有的……