在javascript音频中看到双重,三重声音,如何解决它

Seeing double, triple sound in javascript audio, how to solve it?

本文关键字:声音 何解决 解决 三重 javascript 音频      更新时间:2023-09-26
**This function is in javascript:**
function quesfl(qsvalue) { 
sngno = qsvalue + ".wav";
var audiophile = new Audio();
audiophile.src = sngno;
   audiophile.play();
}
**html part:**

<input type="radio" name="qno" value="02" onClick="quesfl(this.value);">2
<input type="radio" name="qno" value="03" onClick="quesfl(this.value);">3
<input type="radio" name="qno" value="04" onClick="quesfl(this.value);">4

在上面的音频 java 脚本代码中,我有一个用于不同 src 的变量"sngno"。但是,当我更改为不同的 src 时,所有歌曲都在播放,但我只想要一首。当我的网页打开时,如果我重新加载页面,每次播放第一首选定的歌曲时,但是当我为另一首歌曲选择其他按钮时,两首歌曲都会播放。请帮忙。

得到了解决方案。

请尝试以下代码。

<html>
<head>
    <script>
        audiophile = new Audio();
        function quesfl(qsvalue) { 
        sngno = qsvalue + ".wav";
        audiophile.src = sngno;
           audiophile.play();
        }
    </script>
</head>
<body>
    <input type="radio" name="qno" value="02" onClick="quesfl(this.value);">2
    <input type="radio" name="qno" value="03" onClick="quesfl(this.value);">3
    <input type="radio" name="qno" value="04" onClick="quesfl(this.value);">4
</body>
</html>

发生这种情况是因为每次选择不同的单选按钮时,都会创建一个新Audio object并播放,因此所有选定的音频文件都会同时播放。这从面向对象编程的基本概念中得到了解决。

我成功地使用了这个jquery声音库:https://code.google.com/p/jqueryjs/source/browse/trunk/plugins/sound/jquery.sound.js?r=5750

你的Audio变量在处理程序函数中,每次调用它时,你都会创建一个新的变量并开始播放。因此,您最终会得到多个同时播放。

将变量移到外面,只创建一次。

var globalAudio = new Audio();
function playSong (songName) { 
    var songUrl = songName + ".wav";
    globalAudio.src = songUrl;
    globalAudio.play();
}

我还改进了函数和变量的命名。希望这有帮助。