通常我们会碰到的一个问题就是:显示文章内容时,如果文章内容很长的话,整篇文章一起显示在同一页面不太好看。想实现将长文章的内容进行按每页显示固定行数,但是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) { %>onload="ADMenu(0,
<%
=
pageCount
%>
);"
<%
...
}
%>
>

<
div
id
="content"
>

<%
...
if (pageCount > 1)
{
%>
页码:
<%
...
for (int i = 0; i < pageCount; i++)
{
%>
<
a
href
="javascript.:;"
nclick
="ADMenu(<%=i %>,<%=pageCount %>);"
class
="cLink"
>
[
<%
=
i
+
1
%>
]
</
a
>

<%
...
}
}
%>
<
span
id
="contentStr"
runat
="server"
></
span
>

<%
...
if (pageCount > 1)
{
%>
页码:
<%
...
for (int i = 0; i < pageCount; i++)
{
%>
<
a
href
="#top"
nclick
="ADMenu(<%=i %>,<%=pageCount %>);"
class
="cLink"
>
[
<%
=
i
+
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);
}
}
本文探讨了长篇文章在网页上的分页显示方法,对比了按字数分页、按段落分页以及使用特定分隔符的不同效果,并提供了一个使用DIV+.net实现的具体案例。
969

被折叠的 条评论
为什么被折叠?



