function moveElement(elementID,final_x,final_y,interval){ if(!document.getElementById) return false; if(!document.getElementById(elementID)) return false; var elem=document.getElementById(elementID); if(elem.movement){ clearTimeout(elem.movement); } if(!elem.style.left || !elem.style.top) return false; var xpos=parseInt(elem.style.left); var ypos=parseInt(elem.style.top); var dist=0; if(xpos==final_x && ypos==final_y){ return true; } if(xpos<final_x){ dist=Math.ceil((final_x-xpos)/10); xpos=xpos+dist; } if(xpos>final_x){ dist=Math.ceil((xpos-final_x)/10); xpos=xpos-dist; } if(ypos<final_y){ dist=Math.ceil((final_y-ypos)/10); ypos=ypos+dist; } if(ypos>final_y){ dist=Math.ceil((ypos-final_y)/10); ypos=ypos-dist; } elem.style.left=xpos+"px"; elem.style.top=ypos+"px"; var repeat="moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"; elem.movement=setTimeout(repeat,interval); } function prepareSlideshow(){ if(!document.getElementsByTagName) return false; if(!document.getElementById) return false; if(!document.getElementById('intro')) return false; var intro=document.getElementById('intro'); var slideshow=document.createElement('div'); slideshow.setAttribute('id','slideshow'); var frame=document.createElement('img'); frame.setAttribute('src','images/frame.gif'); frame.setAttribute('alt',''); frame.setAttribute('id','frame'); slideshow.appendChild(frame); var preview=document.createElement('img'); preview.setAttribute('src','images/slideshow.gif'); preview.setAttribute('alt','a glimpse'); preview.setAttribute('id','preview'); slideshow.appendChild(preview); insertAfter(slideshow,intro); //在此之前的可以正常运行,效果可以显示出来,但是这后面的效果出不来 var links=document.getElementsByTagName("a"); for(var i=0;i<links.length;i++){ links[i].onmouseover=function(){ var destination=this.getAttribute("href"); if(destination.indexOf("index.html") != -1){ moveElement("preview",0,0,5); } if(destination.indexOf("about.html") != -1){ moveElement("preview",-150,0,5); } if(destination.indexOf("photos.html") != -1){ moveElement("preview",-300,0,5); } if(destination.indexOf("live.html") != -1){ moveElement("preview",-450,0,5); } if(destination.indexOf("contact.html") != -1){ moveElement("preview",-600,0,5); } } } } addLoadEvent(prepareSlideshow);
反复和书上的代码对比过后还是无法发现哪里出错了,在prepareSlideshow()函数注释之前的效果可以实现,但是后面的就不行了,是否哪里出错了,望指点一二,感谢!