javascript - Js改变元素透明度函数,关于变量的作用域问题?
本文介绍了javascript - Js改变元素透明度函数,关于变量的作用域问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
写了一个变换透明度的函数,但是作用域有问题,甚至很奇怪。。。
代码:
<!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
赋值也不应该没有效果啊??
解决方案
<!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;
function changeopto(newOp) {
clearInterval(timer);
timer = setInterval( function() {
var cgspeed = 0;//每个时间单位变换的值
alpha = Number(box.style.opacity)
console.log(box.style.opacity);
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>
这篇关于javascript - Js改变元素透明度函数,关于变量的作用域问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文