<%
这段为JSP开始部分读取数据库语句
String jud_count1=request.getParameter("jud_count"); //读取选择行int totalpage1 = 0;
ClassBean mydata = new ClassBean();
RowSet rs1 = new RowSet();
if(jud_count1 != null){
  try { //如果选择行非空,执行数据库查询语句
    rs1 = mydata.getPagesNum( "", "", 0, 0, "", 0, 1, 20 );
    totalpage1 = rs1.getRow(0).getInt("RecordCount"); //取得查询结果记录条数
  }catch(Exception e) {    
  }
}
%>function alertc(){ //该函数被确认按钮触发运行<%
//此处的totalpage1 为3,并表示有3条记录数
System.out.println("totalpage1:" + totalpage1);
%>但在该函数中,该语句:
if( <%=totalpage1%> > 0 ) window.alert("告警!");  
这里的 <%=totalpage1%> 却变为0了;不知为什么在同一个函数中,同一个变量怎么会不同的值.
如何根据 <%=totalpage1%> 这个变量来做一些判断?}

解决方案 »

  1.   

    "<%=totalpage1%>"改成这个试试加上""
      

  2.   

    <%
    这段为JSP开始部分读取数据库语句
    String jud_count1=request.getParameter("jud_count"); //读取选择行int totalpage1 = 0;
    ClassBean mydata = new ClassBean();
    RowSet rs1 = new RowSet();
    if(jud_count1 != null){
      try { //如果选择行非空,执行数据库查询语句
        rs1 = mydata.getPagesNum( "", "", 0, 0, "", 0, 1, 20 );
        totalpage1 = rs1.getRow(0).getInt("RecordCount"); //取得查询结果记录条数
      }catch(Exception e) {    
      }
    }
    System.out.println("totalpage1:" + totalpage1);
    %>function alertc(){ //该函数被确认按钮触发运行if(document.form1.jud_count.value!=""){
       if(<%=jud_count1%>==null){ //非空,提交服务器
         form1.action="disp?view=jspsname";   
         form1.submit();
       }   <%
    //此处的totalpage1 为3,并表示有3条记录数
    System.out.println("totalpage2:" + totalpage1);
    %>if( "<%=totalpage1%>" > 0 ) window.alert("告警!");  
    }
    jsp页面展现后:
    totalpage2:0点击确定后:
    totalpage1:3
    totalpage2:3不知为什么, 告警总是显示不错。变成楼上的方法也同样。
      

  3.   

    jsp页面展现后:
    totalpage2:0点击确定后:
    totalpage1:3
    totalpage2:3以上是在 web server上显示的(这里是tomcat4.1)
      

  4.   

    这是由于在打开页面编译的时候,脚本被编译时你的<%=totalpage1%> 确实为0。若要解决这个问题只好把<%=totalpage1%> 作为这个函数的参数传进去,这样就不会错了。
    在代码里改为:
    function alertc(rows){ //该函数被确认按钮触发运行if(document.form1.jud_count.value!=""){
       if(<%=jud_count1%>==null){ //非空,提交服务器
         form1.action="disp?view=jspsname";   
         form1.submit();
       }   <%
    //此处的totalpage1 为3,并表示有3条记录数
    System.out.println("totalpage2:" + totalpage1);
    %>if( rows > 0 ) window.alert("告警!");  
    }
    LZ要注意JS脚本是客户端的而JSP语言是服务器端的,他们的值有时是会出现偏差的。算法尽量避免他们之间的值传来传去,比如变为参数传入,就相当于在调用时把服务器端的数据转化到了客户端。
      

  5.   

    谢谢hefei0603(风雨) 的答复。不过用该方法还是同样的问题,调用出改为:
    <input type="button"name="abc" class="FormInput" value="确 定" onClick=alertc(<%=totalpage1%>)>
    jsp页面展现后:
    totalpage1:0
    totalpage2:0点击确定后:
    totalpage1:3
    totalpage2:3并且不能实现告警! 
      

  6.   

    你修改后的函数alertc()是怎样的,贴出来下。
      

  7.   

    你的程序还有个问题。alert()函数在表单提交后面,表单提交后页面已经发生跳转,而你的报警还在原来的页面,当然不能报警。
    解决办法:要么把alert()放到表单提交前,要么把rows作为参数传加到表单的action上, 
    form1.action="disp?view=jspsname&&rows="+rows;//disp是个页面???
    在另外一张JSP页面上报警。   
      

  8.   

    function alertc(obj){ //该函数被确认按钮触发运行if(document.form1.jud_count.value!=""){
       if(<%=jud_count1%>==null){ //非空,提交服务器
         form1.action="disp?view=jspsname";   
         form1.submit();
       }   <%
    //此处的totalpage1 为3,并表示有3条记录数
    System.out.println("totalpage2:" + totalpage1);
    %>if( obj > 0 ) window.alert("告警!");     form1.action="disp?view=jspname2";
       form1.submit();
    }else{
      window.alert("您还没有选择一条记录");
      return false;
    }
    }以上是我改后的函数。
      

  9.   

    function alertc(obj){ //该函数被确认按钮触发运行if(document.form1.jud_count.value!="")
      {/////////你这已经提交表单,页面已经跳转,报警不能实现。跳转后alert()不起作用。
       if(<%=jud_count1%>==null){ //非空,提交服务器
         form1.action="disp?view=jspsname";   
         form1.submit();
       }   <%
    //此处的totalpage1 为3,并表示有3条记录数
    System.out.println("totalpage2:" + totalpage1);
    %>if( obj > 0 ) window.alert("告警!");     form1.action="disp?view=jspname2";
       form1.submit();
    }else{
      window.alert("您还没有选择一条记录");
      return false;
    }
    }
    alert()函数在表单提交后面,表单提交后页面已经发生跳转,而你的报警还在原来的页面,当然不能报警。
    解决办法:要么把alert()放到表单提交前,要么把obj作为参数传加到表单的action上, 
    form1.action="disp?view=jspsname&&rows="+obj;//disp是个页面???
    在另外一张JSP页面上报警。
      

  10.   

    恩,我想在同一张页面上报警!我试试选中某一行,通过onfocus事件去触发执行。
      

  11.   

    问题已解决!笨方法,先页面初始化的时候把要的数据都查出来,再点击确定按钮将所要的值传入函数进行判断是否警告!如果要将当前页的值传入后台再执行,将结果反馈到当前页,必须要提交表单才行。暂时就用笨方法了,可能还有其他好的方法。没时间去想了。结贴,谢谢 hefei0603(风雨) !