这是我的jsp的页面
<form action="" onsubmit="return checkAll();" method="">
......
<%
ResultSet rs=conn.pagesQuery("select * from dempercon order by dempercon_id desc");
int num=0;
 %>
<%if(rs.next()){%>
 <%num++; %>
<td width="10%" nowrap align="center" class="content">
<input id="person1<%=num%>" maxlength="10" name="person1<%=num%>" size="10"  width="100%"style="width: 100" type="text" value=''></td> 
<input type="hidden" id="num_num" name="num_num" value='<%=num%>'/>             
<%}%>
......
<input name='submit' type='submit' value='保  存'/>这是我的JavaScript的checkAll()函数<script language="javascript">
 function checkAll(){
   var max=document.all.num_num.value;
   var i;
for(i=0;i<max;i++){
document.all.person1<%=i%>.value = trim(document.all.person1<%=i%>.value);
} }
</script>点击保存后现在问题是报错“i cannot be resolved”
我想请教一下各位大哥怎么能从document.all.person1<%=i%>.value中让读取i的值,并且使他循环?
谢谢了! 

解决方案 »

  1.   

    不能这么用的
    js 是在服务机上执行的.
    java 是在服务机上执行的.
    两台机器上执行的程序不能搅在一起
      

  2.   

    你的i 在js 里定义,当然不能用在jsp里了
    如果i定义在jsp里,你在js倒是可通知<%=i%>引用它
      

  3.   

    <%if(rs.next()){%>
    这个if是不是应该是while,看样子你想要循环的for(i=0;i<max;i++){
    document.all["person1"+i].value = trim(document.all["person1"+i].value);
    }
    还有,不知道你这个trim定义了没有,javascript是不自带trim的
      

  4.   

    js是在客户端,jsp是在服务器来执行的
      

  5.   

    这么说吧,你的那段报错的代码首先要通过SERVLET/JSP服务器,生成页面,这里一部分工作就是将<%= %>或<% %>中的代码运行,主要是产生HTML片段,这里所有的值和变量都是服务器上的。你的这里变量i是客户端上运行JAVASCRIPT时才产生的,运行环境都不同了。
      

  6.   

    <%=i%>这句中的i的定义语句在哪里啊???
    好像没有变量i的定义吧??
      

  7.   


    我这样写就行了。前提是将所有的name属性改成一样的。
    <script language="javascript">
    function checkAll(){
    var max=document.all.num_num.value;
    var i;
    for(i=0;i<max;i++){
    document.getElementsByName("person1")[i].value; = trim(document.getElementsByName("person1")[i].value;);
    }
    谢谢各位大哥帮忙!
    }
    </script>