2017-08-23 5 views
0

私はしばらくこの問題を見つめてきました。次のコードは、ビデオを見て、実際に再生している音かどうかを判断します。サイレントならば、ループして基本的にGIFのように機能します。Javascriptの条件がオーディオチェックで機能しない

コンソールはサウンドチェックを正確に記録します。私はチェックしてきた。

しかし、(ビデオにループを適用する)コードの次のビットは何が実行されても実行されます。それはサウンドでビデオをループし、私は理由を伝えることができません。

<script type="text/javascript"> 
document.getElementById("my-video_html5_api").addEventListener("loadeddata", function() { 
    if (typeof this.webkitAudioDecodedByteCount !== "undefined") { 
    // non-zero if video has audio track 
    if (this.webkitAudioDecodedByteCount > 0) 
     console.log("video has audio"); 

    else 
     console.log("video doesn't have audio"); 
     var vid = document.getElementById("my-video_html5_api"); 
     vid.loop = true; 
    } 
    else if (typeof this.mozHasAudio !== "undefined") { 
    // true if video has audio track 
    if (this.mozHasAudio) 
     console.log("video has audio"); 
    else 
     console.log("video doesn't have audio"); 
     var vid = document.getElementById("my-video_html5_api"); 
     vid.loop = true; 
    } 
    else 
    console.log("can't tell if video has audio"); 
}); 
</script> 

ヘルプがありますか?

+2

'this.mozHasAudio'がfalseのときだけ' var.loop = true'を行うことを意味するならば、ブロックをカッコで囲む必要があります: '{}'は現在の形式で、console.log常に実行します。 –

答えて

1

括弧を修正してください。すべての "if"と "else"の結果を中括弧で囲む必要があります。

技術的には、単一行のブロックはありませんが、それは良い方法です。複数のラインブロックをラップするか、評価する必要があります。特に、私はいくつかの中括弧にないいくつかのvid.loop = true行を見ています!

+0

Welp ...それは簡単でした。ありがとうございました! – TRose

関連する問題