关于javascript图片轮流显示的问题

来源:百度知道 编辑:UC知道 时间:2024/07/01 03:36:07
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>带按扭的轮换横幅广告</TITLE>
<STYLE type="text/css">
a{/*设置无下划线、文字背景超连接样式*/
color:#ffffff;
font-size:13px;
text-decoration:none;
background-color:#ff0000;
width:20px;
}

</STYLE>
<SCRIPT language="JavaScript">
var NowFrame = 1;
var MaxFrame = 4;
function show(d1) {
if(Number(d1)){
clearTimeout(varTime); //当触动按扭时,清除计时器
NowFrame=d1; //设当前显示图片
}
for(var i=1;i<(MaxFrame+1);i++){
if(i==NowFrame)
document.getElementById('div'+NowFrame).style.display =''; //当前图片示
else
document.getElementById('div'+i).style.display ='none'; //隐藏其他图片层
}
if(NowFrame == MaxFra

解释下你注释的那一部分.
在javascript里,没有函数重载,也就是说一个function test(){}和function test(a,b){}是指向同一个函数,传了参数就会按照从左往右的方式去一一对应,没传代表一一对应的那个行参为undefind,所以调用函数只跟函数名test相关,传不传参并不影响调用目标函数,你调用show()也是同样的道理.至于为什么传一个2就报错了.那是因为你是在body的onload事件里就去调用show这个函数.看看这段代码.
if(Number(d1)){
clearTimeout(varTime); //当触动按扭时,清除计时器
NowFrame=d1; //设当前显示图片
}
你传的2进入if判断,当调用clearTimeout(varTime);这句话的时候,因为之前你并没有定义它(varTime),就去使用它,所以会找不到这个变量值.
如果不传一个2,第一次就不会进if,所以就不会出错,之后你用了<A href="javascript:show(4)">4</A>
去调用show再传一个参数进去的时候,varTime已经定义过了,所以正常运行.