為什么我的透明度加到一不停止,我寫了清楚定時器啊
<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>
2016-06-22
js中的數(shù)字都是用浮點數(shù)表示的
你可以看一下每次opacity+0.1得到的值
你也可以看一下這篇文章https://segmentfault.com/q/1010000000137297了解一下浮點數(shù)的運算
關于你的問題有兩種解法
第一種解法
-----用toFixed將opacity四舍五入為僅有一位小數(shù)的數(shù)字------
<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轉化為整數(shù)-------
<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>
2016-06-22
你把var opacity=0.3;提到bian()外面試一試