关于长文章如何分页显示文章内容的一点建议

    通常我们会碰到的一个问题就是:显示文章内容时,如果文章内容很长的话,整篇文章一起显示在同一页面不太好看。想实现将长文章的内容进行按每页显示固定行数,但是10个字一行好呢还是50个字一行?800*600屏幕是10个字的,1024*800就或许是15个字的,你是固定死的几个字一行还是咋办呢?

其实我个人的建议是:
1、如果按字数分页其实是不好的,简单的说是操作上实在不容易控制。分页显示的控制字数其实是按网页源码进行控制的,如果你的内容里只有文字倒还无所谓,但你的源码里假若包括超链接、图片、Flash等等内容,包含这些格式的网页源码,那么你的文字分隔就会有问题了,而不像想的那般简单了。到那时不光纯粹是分隔文字,还必须考虑这些内容的源码结构才行。

2、假设文章按段落分,这样在操作上显然比按字数分要来得容易处理,只需要判断如”<br>”或是”<p/>”等分隔符即可。但是这样做的结果也并不是是太好,因为我们的文章里有些段落长,有些段落短,而每页分段固定,那么就必然会造成有些页长有些页短了,而且最关键的是每个分页之间意思连接也有可能出现不连贯的问题。

3、好一些的方案是可以针对长文章利用固定分隔符进行文章分隔,例如在文章需要分页处插入”[page]”等分隔符,这样不但有助于长文章的分页操作,还有利于分页之间意思连贯性,当然,唯一不足的地方是增加了人工,相对比较费时。

每种方式都有优缺点,我们可以根据自己的需求来选择,不过就上述几种方式而言,1是不可取的,而3却比2好的多。 

用DIV+.net实现长篇新闻分页显示

.aspx

< body  <%if (pageCount  >  1) { %>οnlοad="ADMenu(0, <% = pageCount  %> );" <% %> >

 

                    
< div  id ="content" >
                        
<% if (pageCount > 1)
                      { 
%>
                       页码:
                        
<% for (int i = 0; i < pageCount; i++)
                      { 
%>
                        
< href ="javascript.:;"  nclick ="ADMenu(<%=i %>,<%=pageCount %>);"  class ="cLink" > <% = +   1 %>  ] </ a >
                        
<% }
                  }
%>
                        
< span  id ="contentStr"  runat ="server" ></ span >
                                                
<% if (pageCount > 1)
                      { 
%>
                       页码:
                        
<% for (int i = 0; i < pageCount; i++)
                      { 
%>
                        
< href ="#top"  nclick ="ADMenu(<%=i %>,<%=pageCount %>);"  class ="cLink" > <% = +   1 %>  ] </ a >
                        
<% }
                  }
%>
                    
</ div >

 

aspx.cs
            string  contentStrS  =  myRead[ " NContent " ].ToString().Replace( " " " <br /> " );
            
string [] conArr  =  Regex.Split(contentStrS,  " /[nPage] " ); // 用特定字符分割新闻            pageCount = conArr.Length;
             if  (pageCount  >   1 ) // 如果是多页
             {
                StringBuilder sb 
= new StringBuilder();
                
for (int p = 0; p < pageCount; p++)
                
{
                    sb.Append(
"<div id="content" + p + "" style="display:none">" + conArr[p] + "</div>");
                }

                contentStr.InnerHtml 
= sb.ToString();
            }

            
else
            
{
                contentStr.InnerHtml 
= contentStrS;
            }

js

//  JScript.文件

 

    
function  ADMenu(index,pageCount) {
   
for(var i=0;i<pageCount;i++){     
        GetObj(
"content"+i).style.display = ´none´;
        }

        GetObj(
"content"+index).style.display = ´block´;
   }


 

  
function  GetObj(objName) {
   
if(document.getElementById){
    
return eval(´document.getElementById("´ + objName + ´")´);
   }
else if(document.layers){
    
return eval("document.layers[´" + objName +"´]");
   }
else{
    
return eval(´document.all.´ + objName);
   }

  }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peter824

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值