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);
????//在此之前的可以正常運(yùn)行,效果可以顯示出來,但是這后面的效果出不來
????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);反復(fù)和書上的代碼對比過后還是無法發(fā)現(xiàn)哪里出錯了,在prepareSlideshow()函數(shù)注釋之前的效果可以實現(xiàn),但是后面的就不行了,是否哪里出錯了,望指點一二,感謝!
JavaScript DOM編程藝術(shù)最后一章,按照內(nèi)容敲代碼,但是無法實現(xiàn)功能,是否哪里出錯了?
小布ever
2016-10-19 00:18:26