利用javascript从数据库取数据来实现CSDN首页图片的切换效果

2007-04-26 10:35:42  作者

我在网上下载了一个网站的部分源代码 ,看到里面有实现CSDN首页图片的切换效果。虽然以前看网上有许多转载的,但是里面的代码都是在js中定义一个数组来存放图片的信息,但是今天这个方法更加灵活啊!只需要以下几步即可。

1.创建sql数据库

CREATE TABLE [dbo].[images] (

[imageid] [int] IDENTITY (1, 1) NOT NULL ,

[imgUrl] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[imgText] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[imgLink] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,

[imgAlt] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL

) ON [PRIMARY]

2.引用外部css代码

%26lt;link href="styles/StyleSheet2.css" rel="stylesheet" type="text/css" /%26gt;

3.写js代码(不知道为什么放在一个单独的js文件不行)

%26lt;script language="javascript" type="text/javascript" %26gt;

var imgWidth=248; //图片宽

var imgHeight=200; //图片高

var textFromHeight=21; //焦点字框高度 (单位为px)

var textStyle="whiter"; //焦点字class style (不是连接class)

var textLinkStyle="whiter"; //焦点字连接class style

var buttonLineOn="#f60"; //button下划线on的颜色

var buttonLineOff="#000"; //button下划线off的颜色

var TimeOut=5000; //每张图切换时间 (单位毫秒);

var imgUrl=new Array();

var imgLink=new Array();

var imgtext=new Array();

var imgAlt=new Array();

var adNum=0;

//焦点字框高度样式表 开始

document.write('%26lt;style type="text/css"%26gt;');

document.write('#focuseFrom{width:'+(imgWidth+2)+';margin: 0px; padding:0px;height:'+(imgHeight+textFromHeight)+'px; overflow:hidden;}');

document.write('#txtFrom{height:'+textFromHeight+'px;line-height:'+textFromHeight+'px;width:'+imgWidth+'px;overflow:hidden;}');

document.write('#imgTitle{width:'+imgWidth+';top:-'+(textFromHeight+14)+'px;height:18px}');

document.write('%26lt;/style%26gt;');

document.write('%26lt;div id="focuseFrom"%26gt;');

//焦点字框高度样式表 结束

imgUrls="%26lt;%=imgUrl%%26gt;";//获取后台cs代码的属性

imgtexts="%26lt;%=imgtext%%26gt;";

imgLinks="%26lt;%=imgLink%%26gt;";

imgAlts="%26lt;%=imgAlt%%26gt;";

imgUrl=imgUrls.split(",");

imgtext=imgUrls.split(",");

imgLink=imgUrls.split(",");

imgAlt=imgUrls.split(",");

function changeimg(n)

{

adNum=n;

window.clearInterval(theTimer);

adNum=adNum-1;

nextAd();

}

function goUrl(){

window.open(imgLink[adNum],'_blank');

}

//NetScape开始

if (navigator.appName == "Netscape")

{

document.write('%26lt;style type="text/css"%26gt;');

document.write('.buttonDiv{height:4px;width:21px;}');

document.write('%26lt;/style%26gt;');

function nextAd(){

if(adNum%26lt;(imgUrl.length-1))adNum++;

else adNum=1;

theTimer=setTimeout("nextAd()", TimeOut);

document.images.imgInit.src=imgUrl[adNum];

document.images.imgInit.alt=imgAlt[adNum];

//document.getElementById('focustext').innerHTML=imgtext[adNum];//在图片下面显示图片的路径

document.getElementById('imgLink').href=imgLink[adNum];

}

document.write('%26lt;a id="imgLink" href="'+imgLink[1]+'" target=_blank class="p1"%26gt;%26lt;img src="'+imgUrl[1]+'" name="imgInit" width='+imgWidth+' height='+imgHeight+' border=1 alt="'+imgAlt[1]+'" class="imgClass"%26gt;%26lt;/a%26gt;%26lt;div id="txtFrom"%26gt;%26lt;span id="focustext" class="'+textStyle+'"%26gt;'+imgtext[1]+'%26lt;/span%26gt;%26lt;/div%26gt;');

document.write('%26lt;div id="imgTitle"%26gt;');

document.write('%26lt;div id="imgTitle_down"%26gt;');

//数字按钮代码开始

for(var i=1;i%26lt;imgUrl.length;i++){document.write('%26lt;a href="javascript:changeimg('+i+')" class="button" style="cursor:hand" title="'+imgAlt[i]+'"%26gt;'+i+'%26lt;/a%26gt;');}

//数字按钮代码结束

document.write('%26lt;/div%26gt;');

document.write('%26lt;/div%26gt;');

document.write('%26lt;/div%26gt;');

nextAd();

}

//NetScape结束

//IE开始

else

{

var count=0;

for (i=1;i%26lt;imgUrl.length;i++) {

if( (imgUrl[i]!="") %26amp;%26amp; (imgLink[i]!="")%26amp;%26amp;(imgtext[i]!="")%26amp;%26amp;(imgAlt[i]!="") ) {

count++;

} else {

break;

}

}

function playTran(){

if (document.all)

imgInit.filters.revealTrans.play();

}

var key=0;

function nextAd(){

if(adNum%26lt;count)adNum++ ;

else adNum=1;

if( key==0 ){

key=1;

} else if (document.all){

imgInit.filters.revealTrans.Transition=23;

imgInit.filters.revealTrans.apply();

playTran();

}

document.images.imgInit.src=imgUrl[adNum];

document.images.imgInit.alt=imgAlt[adNum];

document.getElementById('link'+adNum).style.background=buttonLineOn;

for (var i=1;i%26lt;=count;i++)

{

if (i!=adNum){document.getElementById('link'+i).style.background=buttonLineOff;}

}

//focustext.innerHTML=imgtext[adNum];//在图片下面显示路径

theTimer=setTimeout("nextAd()", TimeOut);

}

document.write('%26lt;a target=_self href="javascript:goUrl()"%26gt;%26lt;img style="FILTER: revealTrans(duration=1,transition=5);" src="javascript:nextAd()" width='+imgWidth+' height='+imgHeight+' border=0 vspace="0" name=imgInit class="imgClass"%26gt;%26lt;/a%26gt;%26lt;br%26gt;');

document.write('%26lt;div id="txtFrom"%26gt;%26lt;span id="focustext" class="'+textStyle+'"%26gt;%26lt;/span%26gt;%26lt;/div%26gt;');

document.write('%26lt;div id="imgTitle"%26gt;');

document.write(' %26lt;div id="imgTitle_down"%26gt; %26lt;a class="trans"%26gt;%26lt;/a%26gt;');

//数字按钮代码开始

for(var i=1;i%26lt;imgUrl.length;i++)

{

document.write('%26lt;a id="link'+i+'" href="javascript:changeimg('+i+')" class="button" style="cursor:hand; " title="'+imgAlt[i]+'" onFocus="this.blur()"%26gt;'+i+'%26lt;/a%26gt;');

}

//数字按钮代码结束

document.write('%26lt;/div%26gt;');

document.write('%26lt;/div%26gt;');

document.write('%26lt;/div%26gt;');

document.write('%26lt;/div%26gt;');

}

//IE结束

%26lt;/script%26gt;

里面重要的地方都有注释了,直接复制到你的aspx代码中即可。

注重在%26lt;body%26gt;%26lt;/body%26gt;中不要%26lt;form%26gt;%26lt;/form%26gt;标签,直接在%26lt;div align=left%26gt;

%26lt;/div%26gt;中输入上面的js代码即可。不知道为什么有form总是报imgInit错误。

4.在cs进行数据库调用直接代码了,呵呵呵不会看不懂吧

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

{

bind();

}

}

public string imgUrl = "", imgLink = "", imgtext = "", imgAlt = "";

void bind()

{

using (SqlConnection connection = new SqlConnection("server=.;database=northwind;uid=sa;pwd=123"))

{

SqlDataAdapter sda = new SqlDataAdapter("select top 5 * from images order by imageid desc", connection);

DataSet ds = new DataSet();

DataTable dt = new DataTable();

sda.Fill(ds);

dt = ds.Tables[0];

for (int i = 0; i %26lt; dt.Rows.Count; i++)

{

imgUrl += dt.Rows[i]["imgUrl"].ToString() + ",";

imgtext += dt.Rows[i]["imgText"].ToString() + ",";

imgLink += dt.Rows[i]["imgLink"].ToString() + ",";

imgAlt += dt.Rows[i]["imgAlt"].ToString() + ",";

}

}

}

测试环境vs2005

假如看着不错对你有用麻烦顶一下啊!假如有好的建议或者好的解决方案也麻烦你共享一下,谢谢!

E-mail:teng_s2000@126.com

QQ:37210956