運(yùn)行下面的代碼,大神們看看哪里錯(cuò)了,為什么透明度總是最后變成0?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>透明度</title>
<style>
div{
width:200px;
height:200px;
background:#F00;
opacity:1;
}
? ? </style>
? ? <script>
window.onload=function(){
var div=document.getElementsByTagName('div')[0];
div.onmouseover=function(){
biantmd();
}
}
var tmd=1;
var timer=null;
function biantmd(){
var div=document.getElementsByTagName('div')[0];
clearInterval(timer);
timer=setInterval(function(){
if(tmd==0.3){
clearInterval(timer);
}else{
tmd=tmd-0.1;
div.style.opacity=tmd;
}
//clearInterval(timer);
},30);
}
? ? </script>
</head>
<body>
<div></div>
</body>
</html>
2016-05-21
思路上分析,可以肯定問題出現(xiàn)在條件判斷上,即tmd == 0.3這個(gè)條件從來沒成立過,實(shí)際上是永不成立,這是浮點(diǎn)數(shù)的鍋。目前一切語(yǔ)言的浮點(diǎn)數(shù)計(jì)算都是近似計(jì)算,會(huì)精確到小數(shù)點(diǎn)16位以上。所以對(duì)于浮點(diǎn)數(shù)變量tmd來說,人為感覺是 tmd == 0.3的時(shí)候, tmd實(shí)際值則是 0.300000000000001之類的值,所以不等。想要看清tmd實(shí)際值,只需在 tmd = tmd - 0.1;這句話后面加alert(tmd),就看得一清二楚。
2016-05-17
if(tmd<=0.3){
? ?clearInterval(timer);
}
2016-05-17
onmouseout