让祝福语“跑马灯”似显示

技术与开发

金九银十,有不少需要送祝福的时间。雪雪想在这个时间段给自己的论坛新添加一个祝福功能,方便论坛的用户相互祝福。最后她在某个论坛看到“跑马灯”祝福功能,用户把祝福语写在一张“纸条”上,在论坛顶部滚动展示。这个功能是怎么设计的呢?

36-f12-1-1.jpg

我们要制作“跑马灯”祝福插件,先要设计的是该插件的数据库,它是用来存放网友们的祝福信息的,然后须要设计祝福信息提交功能,该功能能把祝福信息存放到数据库中,最后将祝福信息从数据库中提取出来,并把这些信息做成一张张“纸条”,再控制这些“纸条”进行从右到左的移动,这样我们便完成了“跑马灯”祝福插件的模仿设计。根据相似原理,我们还可以制作论坛强推文章“跑马灯”显示功能等。

小知识:在ASP中,直接使用“Insert into”语句与使用ADO中AddNew方法为数据库添加记录,哪一种更好呢?AddNew方法的实质就是封装了“Insert into”语句。所以,当我们需要对大量数据进行操作的时候,应优先选用“Insert into”语句。因为直接使用SQL语句,减少了ADO的解释时间,显然会大大加快存取数据的速度。

第一步 新建Access数据库

我们在这里使用的是Access数据库,打开Access,点击“使用设计器创建表”选项,在打开的设计器中添加字段“cid”、“cdate”、“cauthor”、“ccontent”,它们分别用来记录标签的ID号、祝福信息发布的时间、祝福信息的作者以及祝福的内容,然后保存即可。你也可以按照实际需求添加其他字段,如被祝福的人的姓名、标签的颜色等等。

第二步 设计祝福信息提交功能

接下来我们来制作祝福信息提交功能,新建一个ASP页面作为祝福信息提交页面,添加用户提交信息的输入框,然后将用户提交的祝福信息录入数据库中。由于祝福“纸条”容纳的字数有限,我们在向数据库录入信息的时候,应当对祝福内容进行字数限制。在页面中输入相关代码,其中关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

OpenDB()'打开数据库链接

'获取录入的祝福信息

cauthor = Request.Form("author")

cbcolor = Request.Form("tagbcolor")

ccontent = Request.Form("massages")

ccontent = Replace(Replace(Replace(ccontent,"'",""),"〉",""),"〈","")'防止SQL注入

If Len(ccontent) 〉100 Then

LoveTxt = Left(LoveTxt,100) '截取祝福内容前100字(用户可自行修改)

End If

Conn.execute("Insert Into ccc_love(cauthor,ccontent,cbcolor) values ('" & cauthor &"','" & ccontent & "','"& cbcolor & "')") '将祝福信息存入数据库

CloseDB()

Response.write "〈script〉alert('粘贴祝福纸条成功!!!返回首页查看祝福');location.href='index.asp';〈/script〉"

%〉

第三步 以“纸条”的方式滚动显示

我们从数据库中查找已经存档的前50条祝福信息(具体条数可以自行设置),将这些信息以时间先后顺序读取出来,放入我们设计好的“纸条”中,然后利用JavaScript程序设定这些“纸条”在网页上的初始位置,初始位置确定后,便可以计算每张“纸条”的下一次移动的位置并将它们移动到该位置上,重复这一过程,就实现了“跑马灯”效果。再新建一个ASP页面用来显示滚动“纸条”,在页面中输入相关代码,其中关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

OpenDB()'打开数据库链接

Dim sql,Rs,arrRs

Dim arrRsNumS,arrRsNumI

sql = "Select top 50 cid,cdate,cauthor,ccontent,cbcolor,cfcolor from ccc_love order by cID DESC"

Set Rs = Conn.Execute(sql) '读取前50条祝福信息(用户可自行修改)

if not rs.eof then

arrRs = Rs.GetRows '将信息存入数组中

end if

Rs.Close

Set Rs = Nothing

CloseDB()

arrRsNumS = UBound(arrRs,2) '获得二维数组的最大下标

For arrRsNumI = 0 To arrRsNumS

'将读取的祝福信息放入我们设计好的"纸条"中

response.Write("〈div style='background-color:"&arrRs(4,arrRsNumI)&"'〉〈li〉祝福号:"&arrRs(0,arrRsNumI)&"  "&FormatDateTime(arrRs(1,arrRsNumI),2)&"〈/li〉〈li class='a'〉"&arrRs(3,arrRsNumI)&"〈/li〉〈li class='b'〉"&arrRs(2,arrRsNumI)&"〈/li〉〈/div〉")

vs[i].style.left=(vs[i].offsetLeft+vs[i].offsetWidth)〈=0?vW:(vs[i].offsetLeft-10)+'px';// 计算每张“纸条”的下一次移动的位置并将它们移动到该位置上,其中速度值“10”可修改,速度值越大,移动速度越快

sm=window.setTimeout('moveNow()',100); //重复执行移动过程达到“跑马灯”效果,其中重复执行时间可修改,单位为毫秒,值越低,移动速度越快

编后

本文的“跑马灯”祝福插件是从右向左移动的,其实还可以从左向右移动,或者从下往上移动。当然,大家还可以在该插件上添加各种扩展功能,例如添加祝福信息管理后台、添加祝福信息查找功能等。