鍍金池/ 問(wèn)答/HTML5  網(wǎng)絡(luò)安全  HTML/ avalon中如果通過(guò)js設(shè)置元素的多個(gè)style樣式,則樣式無(wú)法清除掉。

avalon中如果通過(guò)js設(shè)置元素的多個(gè)style樣式,則樣式無(wú)法清除掉。

clipboard.png

上圖中語(yǔ)音的長(zhǎng)度和點(diǎn)擊后自動(dòng)播放的動(dòng)畫(huà)樣式是通過(guò)js設(shè)置的。
點(diǎn)擊后播放代碼:

 var timerL = setInterval(
     function(){
        play.style.animation = "playLeftVoice 1s linear infinite";
             if(time==0){
                  clearInterval(timerL);
              }else{
                  time--;
              }
        },500);

語(yǔ)音長(zhǎng)度控制代碼:

if(element){
        if(len<3){
               element.style.width='63px';   
        }else{
                element.style.width=(63+len)+'px';
        }
          i++;
 }else{
   i++;
 }

這兩個(gè)效果是兩個(gè)函數(shù)分別實(shí)現(xiàn)的,先實(shí)現(xiàn)的語(yǔ)音播放功能,播放時(shí)測(cè)試動(dòng)畫(huà)可以正常運(yùn)行與停止,后實(shí)現(xiàn)的控制語(yǔ)音長(zhǎng)度,結(jié)果發(fā)現(xiàn)動(dòng)畫(huà)停止失效,點(diǎn)擊語(yǔ)音之后圖標(biāo)動(dòng)畫(huà)一直在循環(huán),檢查代碼發(fā)現(xiàn)play.style.animation = "playLeftVoice 1s linear infinite";這個(gè)樣式一直存在,也嘗試過(guò)不用定時(shí)器直接清除該樣式,play.style.animation="",但是還是無(wú)效。
點(diǎn)擊前的樣式:

clipboard.png

點(diǎn)擊后的樣式(語(yǔ)音播放后還是這樣,動(dòng)畫(huà)樣式清除不了)

clipboard.png

回答
編輯回答
我以為

同學(xué)。你計(jì)時(shí)器停了木有?計(jì)時(shí)器內(nèi)部變量的引用分離了沒(méi)有

2018年5月10日 03:26