关于javascript图片轮流显示的问题
<HTML><HEAD><METAhttp-equiv="Content-Type"content="text/html;charset=gb2312"><TITLE>带...
<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 == MaxFrame) //设置下一个显示的图片
NowFrame = 1;
else
NowFrame++;
varTime=setTimeout('show()', 3000); //设置定时器,显示下一张图片
}
</SCRIPT>
</HEAD>
<BODY onLoad="show()"> //***********不明白为什么上面明明有参数的,这里调用空的函数也能成功,我把这里面的代码改成onLoad="show(2)"为什么就报错了?
<DIV style="position:absolute;left:200px;top:60px;">
<IMG src="ad-01.jpg" style="display:none;" id="div1" border="0">
<IMG src="ad-02.jpg" style="display:none;" id="div2" border="0">
<IMG src="ad-03.jpg" style="display:none;" id="div3" border="0">
<IMG src="ad-04.jpg" style="display:none;" id="div4" border="0">
</DIV>
<DIV style="position:absolute;left:440px;top:230px;" align="center"><A href="javascript:show(1)">1</A> <A href="javascript:show(2)">2</A> <A href="javascript:show(3)">3</A> <A href="javascript:show(4)">4</A>
</DIV>
</BODY>
</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 == MaxFrame) //设置下一个显示的图片
NowFrame = 1;
else
NowFrame++;
varTime=setTimeout('show()', 3000); //设置定时器,显示下一张图片
}
</SCRIPT>
</HEAD>
<BODY onLoad="show()"> //***********不明白为什么上面明明有参数的,这里调用空的函数也能成功,我把这里面的代码改成onLoad="show(2)"为什么就报错了?
<DIV style="position:absolute;left:200px;top:60px;">
<IMG src="ad-01.jpg" style="display:none;" id="div1" border="0">
<IMG src="ad-02.jpg" style="display:none;" id="div2" border="0">
<IMG src="ad-03.jpg" style="display:none;" id="div3" border="0">
<IMG src="ad-04.jpg" style="display:none;" id="div4" border="0">
</DIV>
<DIV style="position:absolute;left:440px;top:230px;" align="center"><A href="javascript:show(1)">1</A> <A href="javascript:show(2)">2</A> <A href="javascript:show(3)">3</A> <A href="javascript:show(4)">4</A>
</DIV>
</BODY>
</HTML>
注意看注释部分谢谢帮忙!! 展开
展开全部
解释下你注释的那一部分.
在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已经定义过了,所以正常运行.
在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已经定义过了,所以正常运行.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询