来看下JS的一个问题..

来源:百度知道 编辑:UC知道 时间:2024/09/27 10:27:52
今天早上看到一个网站上的菜单觉得挺有意思的..就自己做了下..做完发现一个很严重的问题.....它那个是FLASH做的....
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script>
window.onload=initmenu;
function initmenu(){
document.getElementById("roll").style.left=document.getElementById("menu").getElementsByTagName("a")[0].parentNode.offsetLeft;
for(var i=0;i<document.links.length;i++){
if(document.links[i].parentNode.tagName=="LI" && document.links[i].parentNode.parentNode.id=="menu"){
document.links[i].onmouseover=initmenu1;
}
}
}

function initmenu1(){
var thislink=this.parentNode.offsetLeft;

if(document.getElementById("roll").offsetLeft<thislink){
for(var i=0;i<=thislink-document.getElementById("roll").offs

额,仔细看了一下你的代码,setTimeOut用来延时改变div的位置

多次的滑动只是因为多调用了几次onmouseover函数,多设置了setTimeOut函数,而使div的位置变动过多了

你可以加上限制条件,当div的位置超过需要变动位置时,不再变动,改动的代码为setTimeOut里面的代码,如下

第一个:
setTimeout(function(){
if(thislink>=document.getElementById("roll").offsetLeft)
document.getElementById("roll").style.left=document.getElementById("roll").offsetLeft+1+"px";
},i);

第二个:
setTimeout(function(){
if(thislink<=document.getElementById("roll").offsetLeft)
document.getElementById("roll").style.left=document.getElementById("roll").offsetLeft-1+"px";
},i);

这么长啊..观摩一下!!