为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的透明度加到一不停止,我写了清楚定时器啊

<script type="text/javascript">

window.onload=function(){

var x1=document.getElementById("x1");

x1.onmouseover=bian;

}

var timer=null;

function bian(){

var x1=document.getElementById("x1");

var opacity=0.3;

clearInterval(timer);

timer=setInterval(function(){

if (opacity ==1) {

clearInterval(timer);

}

else{

           opacity=opacity+0.1;

x1.style.opacity=opacity;

}

},30);

}

</script>


正在回答

2 回答

js中的数字都是用浮点数表示的

你可以看一下每次opacity+0.1得到的值

http://img1.sycdn.imooc.com//576a30bf000152d207980412.jpg

你也可以看一下这篇文章https://segmentfault.com/q/1010000000137297了解一下浮点数的运算


关于你的问题有两种解法

第一种解法

-----用toFixed将opacity四舍五入为仅有一位小数的数字------

<script type="text/javascript">

window.onload = function() {

var x1 = document.getElementById("x1");

x1.onmouseover = function(){

bian();

}

}

var timer = null;

var opacity=0.3;

function bian() {

clearInterval(timer);

var x1 = document.getElementById("x1");

timer = setInterval(function() {

if (opacity.toFixed(1) == 1) {

clearInterval(timer);

} else {

opacity+=0.1;

x1.style.opacity=opacity.toFixed(1)

}

}, 30);

}

</script>

第二种解法

------将opacity转化为整数-------

<script type="text/javascript">

window.onload = function() {

var x1 = document.getElementById("x1");

x1.onmouseover = function(){

bian();

}

}

var timer = null;

var opacity=30;

function bian() {

clearInterval(timer);

var x1 = document.getElementById("x1");

timer = setInterval(function() {

if (opacity== 100) {

clearInterval(timer);

} else {

opacity+=10;

x1.style.opacity=opacity/100

}

}, 30);

}

</script>


2 回复 有任何疑惑可以回复我~
#1

慕粉3365042 提问者

真大牛,我服 谢谢你!!!!!
2016-06-22 回复 有任何疑惑可以回复我~
#2

静语默言 回复 慕粉3365042 提问者

不要客气 其实我也不是大牛 一起加油吧 少年!!!O(∩_∩)O
2016-06-22 回复 有任何疑惑可以回复我~

你把var opacity=0.3;提到bian()外面试一试

1 回复 有任何疑惑可以回复我~
#1

慕粉3365042 提问者

1楼正解,谢谢你帮我,很感谢真的。
2016-06-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我的透明度加到一不停止,我写了清楚定时器啊

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信