因为你的for语句是在客户端执行的,而经过服务器解析的时候你的for语句却还没来得及到达客户端。所以,等服务器把<%=%>读完以后,到达客户端的只是最后一个被循环的值了。说得不好,不知道你能不能看懂。呵呵

解决方案 »

  1.   

    如果你想让服务器解析你的for语句,你可以把for也写进<%%>里,让ASP帮你response.write一个<script>,这样就可以。
      

  2.   

    <%
    set rs=conn.execute("select top 5 * from......
    do while not rs.eof
    response.write(rs("xxx"))
    %>
    这样输出的结果是不是只有一条?而且是第五条?那前面那四条哪去了?自已想一下。同理,你用for 循环来执行被服务器端抛出的最后一条数据,也就是你只得到了一个
    arrs[0]="<%=vbCity(5)%>";(假设你的i是<=5的话)。这样,你在客户端就得到了:
    arrs[2]="<%=vbCity(5)%>";
    arrs[3]="<%=vbCity(5)%>";
    arrs[4]="<%=vbCity(5)%>";
    arrs[5]="<%=vbCity(5)%>";
    arrs[6]="<%=vbCity(5)%>";
    arrs[7]="<%=vbCity(5)%>";看得明白吗?本人遇到过N次这样的事了,表达虽然不清晰,但这道理你迟点应该会明白的。
      

  3.   

    <script language=javascript>
    var arr="<%=Sheng%>";
    var arrs=new Array();
    <% for i=0 to 7
    response.write "arr["+i+"]="""+vbCity(i)+""";"
    next%><script>
      

  4.   

    for (i=0;i<7;i++)
       {   
       
          arrs[i]="<%=vbCity(i)%>";
       
       }
    i 参数给arrs[i]可以用,给<%=vbCity(i)%>不能用,服务端和客户端的概念可以这样改:
    <%
    count=0
    do while not rs.eof
    %>  
          arrs[<%=count%>]="<%=vbCity(count)%>";
    <%
    count=count+1
    rs.movenext
    loop
    rs.close
    %>
    var count=<%=count%>;
    for(i=0;i<count;i++)
    {alert(arrs[i]);}