写了一个变换透明度的函数,但是作用域有问题,甚至很奇怪。。。
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin: 0px;
padding: 0px;
}
#box{
width: 800px;
height: 800px;
background-color: #1AE2F6;
}
</style>
</head>
<body>
<div id="box"></div>
<script>
var box=document.getElementById("box");
box.style.opacity=0.1;
box.onmouseover=function(){
changeopto(1);
}
box.onmouseout=function(){
changeopto(0.1);
}
var timer=null;
//var alpha=box.style.opacity;//在这里获取也不行
var alpha=0.1;//只有定义一个值才能完成动画
function changeopto(newOp){
var box=document.getElementById("box");
// alpha=box.style.opacity;//想得到box原来的opacity,不行
clearInterval(timer);
timer=setInterval(function(){
var cgspeed=0;//每个时间单位变换的值
if (newOp<alpha){
cgspeed=-0.01;
alpha+=cgspeed;
box.style.opacity=alpha;
}
if (newOp>alpha){
cgspeed=0.01;
alpha+=cgspeed;
box.style.opacity=alpha;
}
if (newOp==alpha){
clearInterval(timer);
}
},10);
}
</script>
</body>
</html>
为什么在我这个函数里,只有在外部定义一个值才有效?而且在外部用box.style.opacity
(和想赋的值相同)赋值都不行,只能用一个数值;在函数内部用 box.style.opacity
赋值也不应该没有效果啊??