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

 

我在网上下载了一个网站的部分源代码 ,看到里面有实现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代码

<link href="styles/StyleSheet2.css" rel="stylesheet" type="text/css" />

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

    <script language="javascript" type="text/javascript"  >

    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(<style type="text/css">);

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(</style>);

document.write(<div id="focuseFrom">);

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

 

 

imgUrls="<%=imgUrl%>";//获取后台cs代码的属性

imgtexts="<%=imgtext%>";

imgLinks="<%=imgLink%>";

imgAlts="<%=imgAlt%>";

 

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(<style type="text/css">);

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

document.write(</style>);

function nextAd(){

 if(adNum<(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(<a id="imgLink" href="+imgLink[1]+" target=_blank class="p1"><img src="http://www.knowsky.com/+imgUrl[1]+" name="imgInit" width=+imgWidth+ height=+imgHeight+ border=1 alt="+imgAlt[1]+" class="imgClass"></a><div id="txtFrom"><span id="focustext" class="+textStyle+">+imgtext[1]+</span></div>);

 

 document.write(<div id="imgTitle">);

 document.write(<div id="imgTitle_down">);

//数字按钮代码开始

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

//数字按钮代码结束

 document.write(</div>);

 document.write(</div>);

 document.write(</div>);

 nextAd();

}

//NetScape结束

//IE开始

else

{

var count=0;

for (i=1;i<imgUrl.length;i++) {

 if( (imgUrl[i]!="") && (imgLink[i]!="")&&(imgtext[i]!="")&&(imgAlt[i]!="") ) {

  count++;

 } else {

  break;

 }

}

function playTran(){

 if (document.all)

  imgInit.filters.revealTrans.play(); 

}

var key=0;

function nextAd(){

 if(adNum<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<=count;i++)

 {

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

 }

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

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

}

document.write(<a target=_self href="javascript:goUrl()"><img style="FILTER: revealTrans(duration=1,transition=5);" src="http://www.knowsky.com/javascript:nextAd()" width=+imgWidth+ height=+imgHeight+ border=0 vspace="0" name=imgInit class="imgClass"></a><br>);

document.write(<div id="txtFrom"><span id="focustext" class="+textStyle+"></span></div>);

document.write(<div id="imgTitle">);

document.write( <div id="imgTitle_down"> <a class="trans"></a>);

//数字按钮代码开始

for(var i=1;i<imgUrl.length;i++)

{

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

}

//数字按钮代码结束

document.write(</div>);

document.write(</div>);

document.write(</div>);

document.write(</div>);

}

//IE结束

 

</script>

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

注意:在<body></body>中不要<form></form>标签,直接在<div align=left>

</div>中输入上面的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 < 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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值