亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript - 關(guān)于audio標(biāo)簽暫停的問(wèn)題

瀏覽:66日期:2022-11-16 09:14:40

問(wèn)題描述

<audio src='http://www.aoyou183.cn/wenda/res/bg.mp3' controls loop></audio> <input type='checkbox' />:是否播放背景音樂(lè) <script>bgm.onchange=function(){ if(this.checked){m1.volume=0;m1.play();var timer=setInterval(function(){ m1.volume+=0.1; if(m1.volume>0.9){clearInterval(timer); }},200); }else{var timer=setInterval(function(){ if(m1.volume>0){m1.volume-=0.1; }else{clearInterval(timer);m1.pause(); }},200); }} </script>

代碼如上,想要做一個(gè)點(diǎn)擊checkbox實(shí)現(xiàn)背景音樂(lè)淡入淡出的小功能,淡入可以實(shí)現(xiàn),但是淡出時(shí),我想要音量變?yōu)?時(shí),自動(dòng)暫停。但是我這個(gè)音量變?yōu)?之后,進(jìn)度條仍然在走,m1.pause()沒(méi)有生效。。

實(shí)在搞不明白,前端小白,求指導(dǎo)π-π

問(wèn)題解答

回答1:

這個(gè)問(wèn)題比較好玩,代碼的邏輯是沒(méi)問(wèn)題的。

首先需要了解的是:js中浮點(diǎn)數(shù)的計(jì)算不精確的,比如:0.2 + 0.1結(jié)果是0.30000000000000004。

然后直接原因是報(bào)錯(cuò):Failed to set the ’volume’ property on ’HTMLMediaElement’: The volume provided (-1.77636e-16) is outside the range [0, 1].這是在說(shuō)volume只能在[0, 1]的區(qū)間內(nèi)賦值。

漸入時(shí),每次加 0.1,實(shí)際volume的值打印出來(lái)是:

javascript - 關(guān)于audio標(biāo)簽暫停的問(wèn)題

volume每次減 0.1,實(shí)際減到最后會(huì)產(chǎn)生一個(gè)非常非常小的數(shù),但仍大于 0:

javascript - 關(guān)于audio標(biāo)簽暫停的問(wèn)題

所以仍會(huì)執(zhí)行m1.volume-=0.1導(dǎo)致volume被設(shè)置為負(fù)數(shù)報(bào)上面的錯(cuò)。

解決方案已經(jīng)有同學(xué)給出了。另外可以關(guān)注下 ES6 Number.EPSILON,專門(mén)用于解決計(jì)算精度問(wèn)題。

回答2:

問(wèn)題出在volume的值,在HTML5規(guī)范中,volume的值是不能小于0的,但你代碼中的計(jì)算使volume的值小于0了,故腳本出錯(cuò)了不再執(zhí)行。建議改成

if(m1.volume>0.1){ m1.volume-=0.1;}else{ clearInterval(timer); m1.pause();}

這是錯(cuò)誤記錄:Failed to set the ’volume’ property on ’HTMLMediaElement’: The volume provided (1.1) is outside the range [0, 1]另外,代碼沒(méi)有通過(guò)連續(xù)點(diǎn)擊測(cè)試,聲音沒(méi)達(dá)到最大時(shí)再點(diǎn)checkbox,會(huì)出現(xiàn)bug.

回答3:

改成這樣:

var timer = null; bgm.onchange=function(){if(this.checked){ m1.volume=0; m1.play(); clearInterval(timer); timer=setInterval(function(){m1.volume+=0.1;if(m1.volume>0.9){ clearInterval(timer);} },200);}else{ clearInterval(timer); timer=setInterval(function(){console.log(m1.volume)if(m1.volume>0){ // m1.volume -= 0.1;這里會(huì)有精度問(wèn)題,一直減0.1不是到從1到0 m1.volume = m1.volume-0.1<=0?0:m1.volume-0.1;}else{ m1.pause(); clearInterval(timer);} },200);} }`

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 色国产在线视频一区 | 日本特一级毛片免费视频 | 亚洲女初尝黑人巨高清在线观看 | 亚洲一区二区免费看 | 国产精品自产拍在线观看 | 综合色久| 亚洲性色图| 污污视频在线观看黄 | 最新亚洲精品 | 亚洲一区二区三区亚瑟 | 成人在线观看不卡 | 精品久久成人免费第三区 | 精品久久久久久亚洲 | 激情久久免费视频 | 黄色骚片 | 国产在线视频不卡 | 国产97色在线 | 免费 | 123456成年免费视频 | 麻豆精品传媒成人精品 | 国产精品福利视频主播真会玩 | 国产成人8x视频一区二区 | 国产欧美综合一区二区 | 黄黄的网站在线观看 | 国产精品久久久久亚洲 | 精品国产免费一区二区三区五区 | 91青青国产在线观看免费 | 91看视频 | 大尺度福利视频在线观看网址 | 深夜成人性视频免费看 | 成人看片黄a免费看视频 | 亚洲1卡2卡三卡3卡4卡网站 | 青青操手机看 | 操片免费看 | 特级全黄一级毛片视频 | 国产精品欧美韩国日本久久 | 亚洲人成网站在线在线 | 国产免费又色又爽又黄的网站 | 久久88香港三级台湾三级中文 | 中国特级黄色片 | 国产精品99久久免费黑人 | 国产成人三级视频在线观看播放 |