function display() { level +=20; level2 -=20; try{ var aa = $('szflash_bg'+szjx.a).style; var bb = $('szflash_bg'+szjx.b).style;} catch(e) { alert(szjx.a+','+szjx.b); szjx.a=0; var aa = $('szflash_bg'+szjx.a).style; var bb = $('szflash_bg'+szjx.b).style; }
{
pic1[i] = root + pic[i] +'_middle.jpg';
pic2[i] = root + pic[i] +'_small.jpg';
}
else
pic1[i]=pic2[i]=pic[i];
//var ig = new Image();
//ig.src = pic[i];在还没有看代码逻辑之前,先问一下,为何这个地方的else没有添加{},
那么else是只包括了下面的一条语句,还是包括了几条语句,这让后来看代码的人自己猜测是不是因为这个地方,导致逻辑错误吗?所以,建议:不管判断的逻辑中,是不是只有一条语句,都加上{}分隔一下吧,这样以后自己看也清楚,不需要思考,写的时候,是什么逻辑了。
{这个地方,把注释加的地方,确定不会导致错误吗?
加在函数定义之前,或者加在函数内容的第一行,也会更清晰的啊。
这里ELSE 有只有一条语句的
pic1[i]=pic2[i]=pic[i]; 就是给这个赋值的
//在onmouseover时,添加这个定时器
$('szflash_pic').getElementsByTagName('li')[k].onmouseout = function(){
if(szjx.timer){
alert(szjx.timer); //这里有问题计时器的数值会一直累积,并没有清楚掉
//你在这里检测计时器是否存在,可是,你还没有清除计时器呢。
clearTimeout(szjx.timer);
szjx.timer =null;
}
szjx.a++;
//上面刚清楚,这个地方,立即又再次添加计时器了。
szjx.timer = setTimeout(function(){szjx.szflash_move();},4000);
}
理解不了你的逻辑了,不看了,唉唉同时,我看到的你给的代码里面,jsflash函数没有结尾的“}”,你看看你有这问题没。
function jsflash(files,links,texts,username,avatar,mid,w,h,root)
{
var str = '',str1 = '';
var speed = 3000; //图片切换速度
var level=0,level2=100;
this.timer2 = null;
this.timer1=null;
this.timer =null;
this.b=0;
this.a=1;
if(files)
{
var pic = files.split('|');
var links = links.split('|');
var texts = texts.split('|');
var username = username.split('|');
var avatar = avatar.split('|');
var mid = mid.split('|');
var pic1 = new Array();
var pic2 = new Array();
for(var i=0;i<pic.length;i++)
{
if(pic[i].indexOf('http://')<0)
{
pic1[i] = root + pic[i] +'_middle.jpg';
pic2[i] = root + pic[i] +'_small.jpg';
}
else
pic1[i]=pic2[i]=pic[i];
//var ig = new Image();
//ig.src = pic[i];
//var pim = pimsize1(ig.height,ig.width,300,650);
str += '<div class="szflash_bg" id="szflash_bg'+i+'" style="display:none;"><a href="'+links[i]+'" target="_blank"><img height="300" width="650" src="'+pic1[i]+'" alt=""/></a><div class="szflash_member"><a href="index.php?ac=space&id='+mid[i]+'"><img src="'+avatar[i]+'_small.png" alt="" /></a><div class=""><a href=""><h3>'+texts[i]+'</h3></a></div></div></div>';
str1 += '<li class="" onmouseover="stopbg('+i+')"><a href="'+links[i]+'" target="_blank" class=""><img src="'+pic2[i]+'" height="60" width="90" alt="" /></a><a href="'+links[i]+'" target="_blank" class=""><span class="select_border"></span></a></li>' ;
}
str1 ='<ul class="szflash_ul" id="szflash_pic">'+str1+'</ul><div class="szflash_div"></div>';
str += str1;
$('szflash').innerHTML = str;
$('szflash_bg0').style.display='';
$('szflash_pic').getElementsByTagName('li')[0].className = 'selectli';
this.timer = setTimeout(function(){szjx.szflash_move();},3000);
}
this.szflash_move=function()
{
clearInterval(szjx.timer1);
szjx.timer1=null;
if(szjx.a>=i)
szjx.a=0;
if(szjx.b>=i)
szjx.b=0;
if(szjx.a!=szjx.b)
{
szjx.timer2 = setInterval(function(){display();},100);
}
}
function display()
{
level +=20;
level2 -=20;
try{
var aa = $('szflash_bg'+szjx.a).style;
var bb = $('szflash_bg'+szjx.b).style;}
catch(e)
{
alert(szjx.a+','+szjx.b);
szjx.a=0;
var aa = $('szflash_bg'+szjx.a).style;
var bb = $('szflash_bg'+szjx.b).style;
}
if(!document.all)
{
if(bb.opacity <0 || bb.display=='none')
{
bb.display ='none';
$('szflash_pic').getElementsByTagName('li')[szjx.b].className = '';
}
else
{
bb.opacity =level2/100;
}
if(aa.display=='none')
{
aa.opacity =0;
aa.display ='';
}
else
{
if(aa.opacity >1 && aa.display =='')
{
$('szflash_pic').getElementsByTagName('li')[szjx.a].className = 'selectli';
szjx.b=szjx.a;
szjx.a++;
level=0;
level2=100;
clearInterval(szjx.timer2);
szjx.timer2=null;
szjx.timer1 = setInterval(function(){szjx.szflash_move();},speed);
}
else
{//兼容IE模式
aa.opacity =level/100;
}
}
}
else
{
var alphab=bb.filter.replace(/([^\d])/g,'');
if(alphab <0 || bb.display=='none')
{
bb.display ='none';
$('szflash_pic').getElementsByTagName('li')[szjx.b].className = '';
}
else
{
bb.filter='alpha(opacity='+level2+')';
}
if(aa.display=='none')
{
aa.filter='alpha(opacity='+0+')';
aa.display ='';
}
else
{
var alphaa=aa.filter.replace(/([^\d])/g,'');
if(alphaa>100 && aa.display =='')
{
$('szflash_pic').getElementsByTagName('li')[szjx.a].className = 'selectli';
szjx.b=szjx.a;
szjx.a++;
level=0;
level2=100;
clearInterval(szjx.timer2);
szjx.timer2=null;
szjx.timer1 = setInterval(function(){szjx.szflash_move();},speed);
}
else
aa.filter='alpha(opacity='+level+')';
}
}
}
}function stopbg(k)
{
if(!szjx.timer2)
{
clearInterval(szjx.timer1);
szjx.timer1 =null;
if(szjx.timer)
{
clearTimeout(szjx.timer);
szjx.timer =null;
}
szjx.a=k;
szjx.timer = setTimeout(function(){szjx.szflash_move();},500);
$('szflash_pic').getElementsByTagName('li')[k].onmouseout = function()
{
clearInterval(szjx.timer1);
szjx.timer1 =null;
if(szjx.timer)
{
clearTimeout(szjx.timer);
szjx.timer =null;
}
if(szjx.a==szjx.b)
szjx.a++;
szjx.timer = setTimeout(function(){szjx.szflash_move();},3000);
}
}
}
防百度旅游首页的一个效果