【问题标题】:How to play audio every X sound? in javascript如何播放每个 X 声音的音频?在javascript中
【发布时间】:2014-10-11 20:04:38
【问题描述】:

我尝试这样做,但它不起作用

Javascript:

<script>
document.getElementById('player').play();
x = document.one.numberO.value;
i = 0;
x2 = document.one.intervalO.value;
function out(){
    if ((document.one.numberO.value == "")||(document.one.numberO.value < 1)||(document.one.intervalO.value < 5)||(document.one.intervalO.value == ""))
    {
        alert("error");
    }
    else{
var intervalID = setInterval(start, x2*1000);
 i++;
 if (i == x)
 {
     clearInterval(intervalID);
 }
 }
}

function start(){
 document.getElementById('player').play();
}

还有 HTML:

<form name="one">
    Number <br />
    <input type="text" name="numberO"><br />
    <br />
    Interval <br />
    <input type="text" name="intervalO">
</form> 
<audio id="player" src="too.mp3"></audio>   
<div>   
    <button onclick="out();">Start</button>
    <button onclick="document.getElementById('player').pause()">||</button>
    <br>
    <br>
    <button onclick="document.getElementById('player').volume+=0.1"> +</button>
    <button onclick="document.getElementById('player').volume-=0.1"> -</button>
</div> 

我需要每 X 秒播放一次声音(我从文本字段中获取值)X2 次(也从文本字段中获取)

【问题讨论】:

  • 你想如果有人在 x 字段中输入 10,那么声音应该运行 10 秒还是每 10 秒后运行一次??

标签: javascript jquery html audio


【解决方案1】:

给你 :) 希望对你有帮助。

function out() {
  x = document.getElementById('a').value;
 intrvl = setInterval("sound(x)", x*1000);
}
i = 0;
function sound(x) 
{
  if(x == i)
    {
      clearInterval(intrvl);
    }
  i++;
  
 document.getElementById('player').play();
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
<input type="text" id="a">
  <input type="button" value="sec" id="s" onclick="out()">
  
<audio id="player" src="http://www.soundjay.com/button/beep-01a.mp3"></audio> 
  
</body>
</html>

【讨论】:

    【解决方案2】:
    var audioPlayer = document.getElementById("player");
    var audioPlayCount = parseInt(document.one.numberO.value);
    var audioSeconds = parseInt(document.one.intervalO.value);
    
    var start = function()
    {
        audioPlayer.play();
    };
    
    var out = function()
    {
        if(!audioPlayCount || !audioSeconds || audioSeconds < 5 )
        {
            alert("error");
            return;
        }
    
        for(var i = 0; i < audioPlayCount; i++)
        {
            setTimeout(start, 1000 * audioSeconds);
        }
    };
    

    我没有测试过这段代码,但你明白了。

    【讨论】:

    • parseInt 中添加, 10。而且你的 for 循环对i 也没有任何作用。此外,应使用函数声明而不是函数表达式。
    猜你喜欢
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多