关键是这句话self = oli[i];m=1;
要执行到n>=1后才赋值;
怎么让它只要鼠标移动新的li就赋值。<!doctype html><html>
<head>
<meta charset="utf-8" />
<style type="text/css">
#myCanvas{ border:1px solid #ccc;}
*{margin:0;padding:0;}
ul{ margin-left:500px;list-style:none }
li{ position:relative;width:100px;line-height:25px;border:1px solid #ccc }
.popDiv{ position:absolute;top:0px;left:100px;width:100px;height:50px;background:orange;color:#fff;display:none;opacity:0; }
</style>
</head>
<body>
<div id="box">mybox</div><ul id="list">
<li>
<a href="" title="iphone_ios">苹果</a>
<div class="popDiv">
</div>
</li>
<li>
<a href="" title="安卓_java">google</a>
<div class="popDiv">
</div>
</li>
<li>
<a href="" title="wp">微软</a>
<div class="popDiv">
</div>
</li>
<li>
<a href="" title="mysql">甲骨文</a>
<div class="popDiv">
</div>
</li>
<li>
<a href="" title="全球最大的社交网站">facebook</a>
<div class="popDiv">
</div>
</li>
</ul><canvas id="myCanvas" width="600" height="300">你的浏览器还不支持哦</canvas>
<script type="text/javascript">
var list = document.getElementById("list");
var oli = list.getElementsByTagName("li");
var n = 0;
var m =0;
var timer = null;
var ssss = null;
var flag = true;
for(var i=0; i<oli.length; i++){
var li = oli[i];
li.onmouseover = (function(i){ return function(){
if(n >= 1){
oli[i].getElementsByTagName("div")[0].style.display = "block";
oli[i].getElementsByTagName("div")[0].style.opacity = "1";
self = oli[i];
m=1;
timer && clearTimeout(timer);
n=0;
}else{
n = n+0.200011515;
oli[i].getElementsByTagName("div")[0].style.display = "block";
oli[i].getElementsByTagName("div")[0].style.opacity = n;
flag = false;
timer = setTimeout(arguments.callee,90);
}
}
})(i)
li.onmouseout = function(){
if(m <= 0){
self.getElementsByTagName("div")[0].style.display = "none";
self.getElementsByTagName("div")[0].style.opacity = "0";
ssss && clearTimeout(ssss);
}else{
m -=0.200011515;
self.getElementsByTagName("div")[0].style.opacity = m;
console.log(oli[i])
ssss = setTimeout(arguments.callee,90);
}
}
}
</script> </body>
</html>
要执行到n>=1后才赋值;
怎么让它只要鼠标移动新的li就赋值。<!doctype html><html>
<head>
<meta charset="utf-8" />
<style type="text/css">
#myCanvas{ border:1px solid #ccc;}
*{margin:0;padding:0;}
ul{ margin-left:500px;list-style:none }
li{ position:relative;width:100px;line-height:25px;border:1px solid #ccc }
.popDiv{ position:absolute;top:0px;left:100px;width:100px;height:50px;background:orange;color:#fff;display:none;opacity:0; }
</style>
</head>
<body>
<div id="box">mybox</div><ul id="list">
<li>
<a href="" title="iphone_ios">苹果</a>
<div class="popDiv">
</div>
</li>
<li>
<a href="" title="安卓_java">google</a>
<div class="popDiv">
</div>
</li>
<li>
<a href="" title="wp">微软</a>
<div class="popDiv">
</div>
</li>
<li>
<a href="" title="mysql">甲骨文</a>
<div class="popDiv">
</div>
</li>
<li>
<a href="" title="全球最大的社交网站">facebook</a>
<div class="popDiv">
</div>
</li>
</ul><canvas id="myCanvas" width="600" height="300">你的浏览器还不支持哦</canvas>
<script type="text/javascript">
var list = document.getElementById("list");
var oli = list.getElementsByTagName("li");
var n = 0;
var m =0;
var timer = null;
var ssss = null;
var flag = true;
for(var i=0; i<oli.length; i++){
var li = oli[i];
li.onmouseover = (function(i){ return function(){
if(n >= 1){
oli[i].getElementsByTagName("div")[0].style.display = "block";
oli[i].getElementsByTagName("div")[0].style.opacity = "1";
self = oli[i];
m=1;
timer && clearTimeout(timer);
n=0;
}else{
n = n+0.200011515;
oli[i].getElementsByTagName("div")[0].style.display = "block";
oli[i].getElementsByTagName("div")[0].style.opacity = n;
flag = false;
timer = setTimeout(arguments.callee,90);
}
}
})(i)
li.onmouseout = function(){
if(m <= 0){
self.getElementsByTagName("div")[0].style.display = "none";
self.getElementsByTagName("div")[0].style.opacity = "0";
ssss && clearTimeout(ssss);
}else{
m -=0.200011515;
self.getElementsByTagName("div")[0].style.opacity = m;
console.log(oli[i])
ssss = setTimeout(arguments.callee,90);
}
}
}
</script> </body>
</html>
if(m <= 0){
self.getElementsByTagName("div")[0].style.display = "none";
self.getElementsByTagName("div")[0].style.opacity = "0";
ssss && clearTimeout(ssss);
}else{
m -=0.200011515;
self.getElementsByTagName("div")[0].style.opacity = m;
console.log(oli[i])
ssss = setTimeout(arguments.callee,90);
}
}
这里的SELF有问题。。你这样得到的是window。。并不是你想要的上面的oli[i]这个值;
你可以alert(SELF)看看
应该在之前声明var self=null;