javascript - setTimeOut 在函数中未按预期工作

标签 javascript jquery html audio settimeout

由于某种原因,我的函数中的 setTimeOut 变量不起作用。我尝试了几种不同的策略,但没有一个有效。基本上,我试图在音频播放之前设置延迟。下面是我的 JS 和 HTML 代码。

function song(musicfile) {
  $('#result').html("<audio autoplay=\"true\"><source src=" + musicfile + " type=\"audio/mpeg\" /></audio>");
  setTimeout(song, 10000);
}
<img class="playbutton1 center-block" src="play.png" onclick="song('pretender.m4a');">

最佳答案

当然没有延迟。有人点击图片,你立即注入(inject)<audio>元素,然后设置延迟。

您需要的是setTimeout(function_that_injects_the_element, 10000) .

function song(musicfile) {
  setTimeout(function() {
    $('#result').html("<audio autoplay=\"true\"><source src=" + musicfile + " type=\"audio/mpeg\" /></audio>");
  }, 10000);
}

我可能建议还删除任何现有的音频元素,或者至少在可能的情况下停止它们。

关于javascript - setTimeOut 在函数中未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167053/

相关文章:

javascript - Chrome 31.0 HTML5 Canvas 绘制图像

javascript - 使 .active 类在 slider 上加载

html - 两行或多行显示柔性

javascript - AngularJS e2e 测试选择(下拉)、输入单选、输入复选框之间的区别

javascript - 从父页面访问子 iFrame DOM

javascript - 如何从ajax函数给js变量赋值(PHP)

javascript - Grunt Uglify - 如何创建用于调试的源映射?

javascript - 如何在文档准备就绪时使用ajax加载图像

javascript - jQuery 悬停事件同时影响两个不同的 Div(未嵌套)

javascript - jQuery - 停止子级悬停触发父级单击相关元素