亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

運行下面的代碼,大神們看看哪里錯了,為什么透明度總是最后變成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>


正在回答

3 回答

思路上分析,可以肯定問題出現在條件判斷上,即tmd == 0.3這個條件從來沒成立過,實際上是永不成立,這是浮點數的鍋。目前一切語言的浮點數計算都是近似計算,會精確到小數點16位以上。所以對于浮點數變量tmd來說,人為感覺是 tmd == 0.3的時候, tmd實際值則是 0.300000000000001之類的值,所以不等。想要看清tmd實際值,只需在 tmd = tmd - 0.1;這句話后面加alert(tmd),就看得一清二楚。

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

Csunnnnn

因此對于浮點數的運算,采取等于判斷的形式,往往會收到錯誤的后果。
2016-05-21 回復 有任何疑惑可以回復我~
#2

qq_任重道遠_1 提問者

非常感謝!
2016-10-26 回復 有任何疑惑可以回復我~

if(tmd<=0.3){
? ?clearInterval(timer);
}

0 回復 有任何疑惑可以回復我~

onmouseout

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

運行下面的代碼,大神們看看哪里錯了,為什么透明度總是最后變成0?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號