<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 浮动广告 </TITLE>
<META http-equiv="content-type" CONTENT="text/html;charset=gb2312">
<META NAME="Author" CONTENT="CZH;[email protected]">
</HEAD>
<script LANGUAGE="JavaScript">
<!--var floatAdvs = new Array(); //用于保存添加的广告信息
var intervalTime = 20;
function addAdv(id,x,y,src,url,type,width,height)
{
// id 为广告层id
// x 为广告左边相对窗口左边的距离
// y 为广告顶边相对窗口顶边的距离
// src 为动画的目录位置
// url 为广告对应的链接
// type 表示是添加gif动画还是flash动画
// width和height为动画的宽度和高度
//根据要加入的广告类型构造内容
if(type=='gif')
content = "<a href="+url+"><img src="+src+" width="+width+"height="+height+"></a>";
if(type=='flash')
content ='<a href='+url+'>'+
'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"  width="778" height="120">'+
            '<param name="movie" value="'+ src +'">' +
            '<param name="quality" value="high">' +
            '<param name="wmode" value="transparent">' +
            '<embed src="'+src+'" width="'+width+' height="'+height+'" quality="high" type="application/x-shockwave-flash"'+ 'wmode="transparent"></embed></object>'+
'</a>';
   document.write('<DIV id='+id+' style="Z-INDEX: 380; POSITION: absolute; left:' + (typeof(x)=='string'?eval(x):x)+';top:'+(typeof(y)=='string'?eval(y):y)+'">'+content+'</DIV>');
//如果x或者y是字符串,则当作表达式进行处理,取其值作为位置坐标
num = floatAdvs.length; //这里必须先把 floatAdvs.length值取出来
floatAdvs[num] = new Array(); //定义二维数组,二级记录id,x,y
floatAdvs[num]['id']=id;
floatAdvs[num]['x']=x;
floatAdvs[num]['y']=y;
}
//根据窗口变化、滚动条的移动而移动
function makeAnimate()
{
 
for(var i=0;i<floatAdvs.length;i++)
  {
var floatAdv_x = (typeof(floatAdvs[i]['x'])=='string'?eval(floatAdvs[i]['x']):floatAdvs[i]['x']);
var floatAdv_y = (typeof(floatAdvs[i]['y'])=='string'?eval(floatAdvs[i]['y']):floatAdvs[i]['y']);
var floatAdv = document.getElementById(floatAdvs[i]['id']); if(floatAdv.offsetLeft!=(document.body.scrollLeft+floatAdv_x)) 
{
var dx=document.body.scrollLeft+floatAdv_x-floatAdv.offsetLeft;
if(dx>5) //距离较大时,以较大步距移动
dx=5;
else //距离较小时,每步移动1
dx=dx>0?1:-1;
floatAdv.style.left=floatAdv.offsetLeft+dx;
}
  if(floatAdv.offsetTop!=(document.body.scrollTop+floatAdv_y))
{
var dy=document.body.scrollTop+floatAdv_y-floatAdv.offsetTop;
if(dy>5)
dy=(dy>0?1:-1)*5;
else
dy=(dy>0?1:-1);
//floatAdv.style.top=floatAdv.offsetTop+dy;
floatAdv.style.top=parseInt(floatAdv.style.top)+dy;
   }
floatAdv.style.display = 'block';
}

addAdv('floatadv1',0,50,'./logo_blueidea.gif','http://www.blueidea.com','gif',88,31);
addAdv('floatadv2','document.body.clientWidth-100',50,'./logo_lubian.gif','','gif',88,31);
addAdv('floatadv3','document.body.clientWidth-650',110,'./12.swf','http://www.uestc.edu.cn','flash',700,60);
window.setInterval('makeAnimate()',intervalTime);
//-->
</script>
<BODY width='778px' height='800px' align='center'>
<table height='900px' width='700px' align="center">
<tr valign='top'><td>
<table>
<tr height='21px'>
<td>网页内容</td><td>网页内容</td><td>网页内容</td>
</tr>
<tr height='21px'>
<td>网页内容</td><td>网页内容</td><td>网页内容</td>
</tr>
</table>
</td></tr>
</table>
</BODY>
</HTML>问题一:
就是floatAdvs数组的声明,
我没看明白它的每一项是怎么声明的,
而直接到了取数组长度,和定义二维
num = floatAdvs.length;
floatAdvs[num] = new Array();
floatAdvs[num]['id']=id;
floatAdvs[num]['x']=x;
floatAdvs[num]['y']=y;
问题二:
if(floatAdv.offsetLeft!=(document.body.scrollLeft+floatAdv_x)) 
假设开始滚动条在最左边,滚动条向左滑动后,scrollLeft增加且为正,floatAdv_x大小由floatAdv.style.left=floatAdv.offsetLeft+dx;改变,逐渐增加。
那么floatAdv.offsetLeft是怎么变化的呢?
offsetLeft的具体含义是什么?
为什么稳定状态时候floatAdv.offsetLeft=document.body.scrollLeft+floatAdv_x?

解决方案 »

  1.   

    问题一: 
    就是floatAdvs数组的声明, 
    我没看明白它的每一项是怎么声明的, 
    而直接到了取数组长度,和定义二维 
    num = floatAdvs.length; 
    floatAdvs[num] = new Array(); 
    floatAdvs[num]['id']=id; 
    floatAdvs[num]['x']=x; 
    floatAdvs[num]['y']=y; 
    回答:floatAdvs的一维已经在前面声明啦:var floatAdvs = new Array();    //用于保存添加的广告信息问题二: 
    if(floatAdv.offsetLeft!=(document.body.scrollLeft+floatAdv_x)) 
    假设开始滚动条在最左边,滚动条向左滑动后,scrollLeft增加且为正,floatAdv_x大小由floatAdv.style.left=floatAdv.offsetLeft+dx;改变,逐渐增加。 
    那么floatAdv.offsetLeft是怎么变化的呢? 
    回答:是相对固定的。
    offsetLeft的具体含义是什么? 
    回答:相对左边的距离。
    为什么稳定状态时候floatAdv.offsetLeft=document.body.scrollLeft+floatAdv_x?
    回答:从现象来说,就是浮动广告框左边到了浏览器的左边框。 
      

  2.   

    楼上的哥哥
    问题一:
    定义一个数组,除了var floatAdvs = new Array();    
    不是还要把每一项是什么写出来吗?
    它仅仅是把二维的每一项写出来了。
    问题二:
    你明白,可我还是不懂。