JavaScript DOM编程艺术最后一章,按照内容敲代码,但是无法实现功能,是否哪里出错了?

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()函数注释之前的效果可以实现,但是后面的就不行了,是否哪里出错了,望指点一二,感谢!

小布ever
浏览 2540回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP