当前位置:Gxlcms > JavaScript > 静态的动态续篇之来点XML_javascript技巧

静态的动态续篇之来点XML_javascript技巧

时间:2021-07-01 10:21:17 帮助过:5人阅读

在搞定了基本的伪动态之后,我马上把它应用到了网站,但随后就发现了一个问题:我如何来管理新闻列表呢?要是让我在每次要加新闻时去修改源文件然后再上传我可是千万个不愿,不仅麻烦而且容易出错,懒人怎么能可以这么做。动动脑子,于是想到了用XML,这个早已存在,但近些年才流行起来的技术。

在HTML里,可以使用数据岛来使用XML数据,一个使用方法就是在HTML里加入一句:

这样,就可以在HTML里使用XML提供的数据。不过,这样还是显得麻烦了,还是要上传整个文件,那么用方便点的吧~~

这样处理之后,我就可以只用修改一个XML文件然后上传到服务器了。

接下来,就是搞定在客户端对XML数据的处理了~~

首先,我得设计一个新闻的数据结构。这个简单,毕竟在列表时只需要用到新闻的标题和时间,但为了链接,需要加上一个ID,结果如下:

1

第一个新闻

2005-11-16

数据结构搞定了,继续!

在客户端对数据处理当然首选JavaScript了,再么这篇文章讲的也是用JavaScript来实现伪动态。

在JS里,对数据岛的访问可以使用记录集:

var rs=data.recordset;

这个记录集的使用方法和ASP中类似,这下方便我了:),可以很方便地实现新闻的列表及链接了~在显示新闻,还需要显示的是上一条新闻的标题及下一条新闻的标题,而且显示新闻列表时,就不需要显示上一条及下一条新闻了。于是我放了两个层分别用来显示新闻和上一条及下一条新闻的信息,并在需要的时候设置是否显示。其中newsmain用来显示新闻或者新闻列表,newspage用来显示上一条及下一条新闻的信息。接着把对应ID的新闻存为网页文件,在显示时使用iframe嵌入。

先写个函数来从网址中获取新闻ID,这个在前一篇文章已经讲过,拿来用~~

function getid() {

var str,len,pos,id,fn; // 定义一些变量

str=top.window.location.href; //获取当然文件地址

len=str.length; // 得到地址长度

pos=str.indexOf("?id=",0); // 得到"?id="的起始地址

// 判断是否存在"?id="

if(pos>0) {

id=str.substring(pos+4,len); // 获取ID

return eval(id); // 返回数值类型的ID,方便处理

}

else {

return 0; // 错误参数,返回0,显示新闻列表

}

}

再来个函数处理进入页面时执行什么动作,是显示新闻列表还是显示相应ID的新闻

function showmain() {

var id;

id=getid(); // 获取新闻ID

// 是 0 则显示列表

if(id>0) {

rs.absoluteposition=id; // 设置游标到指定的新闻

shownews(id); // 显示新闻

}

else {

showlist(); // 显示新闻列表

}

}

显示新闻列表的函数

function showlist() {

var ss=""; // HTML

var i; // 循环计数器

rs.movefirst(); // 移动到第一个记录

// 循环读取新闻记录

for(i=0;i

ss=ss+"·"+rs("title")+" ("+rs("date")+")
"; // 添加一个新闻

rs.movenext(); //移动到下一条一新闻

}

document.all.newsmain.innerHTML=ss; //在新闻显示区输出新闻

document.all.newspage.style.visibility="hidden"; // 显示新闻列表时,不显示前后新闻的信息

}

显示指定的新闻,并显示前后新闻的信息

function shownews(id) {

var ps; // 用于存放前后新闻的信息

document.all.newsmain.innerHTML="