【发布时间】:2018-02-07 12:03:06
【问题描述】:
我正在用 HTML 和 JavaScript 构建一个闹钟。
我有一个播放歌曲playSound(soundfile) 的函数,还有一个在给定时间调用playSound 函数Acordar(h, m) 的函数。这两个都可以自己正常工作。
我还有一个表单,我在其中输入小时和分钟,当我按下保存按钮时,它会调用 Acordar 并给出小时和分钟。
问题是,当我以这种方式调用Acordar 时,声音立即播放(它不会在播放声音之前等待请求的时间)。但是,正如我之前提到的,这两个函数都可以单独运行。
这是我的代码:
playSound 函数:
function playSound(soundfile) {
document.getElementById("dummy").innerHTML= "<embed
src=\""+soundfile+"\" hidden=\"true\" autostart=\"true\" loop=\"false\" />";
}
Acordar 函数:
function Acordar(h, m) {
var now = new Date();
var espera = new Date(now.getFullYear(), now.getMonth(), now.getDate(), h, m, 0, 0) - now;
if (espera < 0) {
espera += 86400000;
}
setTimeout(function() {
document.getElementById("dummy").innerHTML="<embed src=\""+'starwars.mp3'+"\" hidden=\"true\" autostart=\"true\" loop=\"false\" />";
}, espera);
}
这是我的 HTML 表单:
<div class="defTime" id="defTime">
<label id="hora" for="hora"></label>
<select size="1" id="hora" name="hora">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="19">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
</select>
<label for="minuto"></label>
<select size="1" id="minuto" name="minuto">
<option value="0">0</option>
<option value="5">5</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
<option value="30">30</option>
<option value="35">35</option>
<option value="40">40</option>
<option value="45">45</option>
<option value="50">50</option>
<option value="55">55</option>
</select>
<button id="save" type="submit" style="border: 0; background: transparent" class="save" onclick="Acordar(hora.value, minuto.value)"><img src="save.png" width="50" height="50" alt="submit" />
【问题讨论】:
-
为什么要插入
embed标签而不是使用 HTML5 音频 API? -
@Toastrackenigma 正如我所说,我不是一个非常熟练的 html 程序员 :) 我会看看,也许它可以解决我的问题,谢谢 :)
标签: javascript html forms function button