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

时间:2013-09-26 10:10:07

标签: javascript

**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脚本代码中,我有一个变量'sngno'用于不同的src。但是,当我改为不同的src时,所有的歌曲都在播放,但我只想要一首。当我的网页打开时,如果我重新加载页面,每次播放第一首选定的歌曲,但是当我为另一首歌曲选择其他按钮时,两者都会播放。请帮助。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

得到了解决方案。

请尝试以下代码。

<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 并播放,因此所有选定的音频文件都会播放 同时 即可。这是从面向对象编程的基本概念中解决的。

答案 2 :(得分:0)

您的Audio变量位于处理函数内部,每次调用它时都会创建一个新变量。开始玩吧。因此,你最终会有多个,同时玩。

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

var globalAudio = new Audio();

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

我还改进了你的功能和命名的命名。变量..希望这会有所帮助。