看下面一小段asp代码,如何实现每行循环调用5个内容后,自动换行。

<% set rs = server.CreateObject("adodb.recordset") sql = "select * from contents order by id desc" rs.Open sql,conn,1,1 Do While Not rs.eof %> <a><span style="color:blue"><%=rs("name")%></span></a> <% rs.movenext Loop rs.close Set rs = Nothing else response.redirect("index.asp") End If %>例如想调用“name”所有内容,每行显示5个name后,自动换行再显示5个。如下
-------------
第一 ,第二, 第三, 第四, 第五;
第六 ,第七 ,第八 ,第九 ,第十;
第十一
<%
set rs = server.CreateObject("adodb.recordset")
sql = "select * from contents order by id desc"
rs.Open sql,conn,1,1
Do While Not rs.eof
%>
<a><span style="color:blue"><%=rs("name")%></span></a>
<%
rs.movenext
Loop
rs.close
Set rs = Nothing
else
response.redirect("index.asp")
End If
%>
把上面代码都换行,看着会直观些。

第1个回答  2014-01-01
<%
Dim X
X=0
    Set rs = server.CreateObject("adodb.recordset")
    sql = "select * from contents order by id desc"
    rs.Open sql,conn,1,1
    If Not(rs.bof And rs.eof) Then '判断数据库记录不为空
        Do While Not rs.eof
            If X mod 5 = 0 Then 'X取模,整除5,并没有余数时,输出<BR>换行
                Response.write "<BR />"
            End If
            Response.Write "<a><span style='color:blue'>"&rs("name")&"</span></a>"
            X=X+1 '输出计数
            rs.movenext
        Loop
        rs.close
        Set rs = Nothing
    Else
        response.redirect("index.asp")
    End If 
%>

追问

调试时有代码错 end

追答

你把我这一段单独调试,,,
或是,,把
If X mod 5 = 0 Then 'X取模,整除5,并没有余数时,输出换行
Response.write ""
End If
嵌到你的 Do While Not rs.eof 下一行去
-------------------------------------------------------------
X=X+1 '输出计数

写到 LOOP之前一行去

看你的源码,貌似是少了一个IF的

追问

按照你说的进行调整,还是不行,后来发现是这句影响: If Not(rs.bof And rs.eof) Then '判断数据库记录不为空。 屏蔽掉这句才可以。

追答

估计是你的上下文源码,有未闭合的IF在里边
不过,无所谓了,主要就是那个,If X mod 5 = 0 Then 及后边的X=X+1,,,就是一个计数,为5后换行而已.没其它特别的地方.

追问


可以了,确实是我上面这段掉了 end if 漏写,居然网页也正常使用。非常感谢您的帮助啦,对比答案还是楼上的css方法稍好,给你个赞。

第2个回答  2014-01-01

可以用CSS来控制,就不需要程序判断了。

<style>
#box{width:500px;height:auto;}
#box span{display:block;float:left;width:100px;height:35px;line-height:35px;}
</style>
<div>
<%
 set rs = server.CreateObject("adodb.recordset")
 sql = "select * from contents order by id desc"
 rs.Open sql,conn,1,1
 Do While Not rs.eof
 %>
<span><a><%=rs("name")%></a></span>
<%
 rs.movenext
 Loop
 rs.close
 Set rs = Nothing
 else
     response.redirect("index.asp")
 End If 
%>
</div>

这个原理呢是设置BOX的宽度为500PX,它里面的SPAN宽度为100一个,而且向左浮动,所以当SPAN加起来的宽度超过大于500PX了,就会自动换行。。。


当然用程序判断也是可以的。

<%
  set rs = server.CreateObject("adodb.recordset")
  sql = "select * from contents order by id desc"
  rs.Open sql,conn,1,1
  i=0'定义一个变量来计数
  Do While Not rs.eof
  %>  
<a><span style="color:blue"><%=rs("name")%></span></a>
  <%
  i=i+1'循环一次就+1
  if i mod 5=0 then'当i除于5,余数为0,说明这是5的倍数,
  response.write"<br>"'就输出一个换行符,这样就可以达到5个就自动换行了。
  end if
  rs.movenext
  Loop
  rs.close
  Set rs = Nothing
  else
      response.redirect("index.asp")
  End If 
%>

追问

第一种调试不行呢,不过第二种程序判断能实现。

追答

哦写错了一点
把改成

就可以了。。

呼。

追问

很好,正常了,。css风格很好看~~

本回答被提问者采纳
相似回答