每当布尔值在 JavaScript 中变为 false 时调用函数
invoke function everytime a boolean becomes false in JavaScript
>每次 html 音频元素的"暂停"属性变为假时,我都会尝试调用一个函数。
我有一个计时器,可以计算音频文件实际收听的时间(我还想在使用时间栏搜索时排除时间)。
我尝试使用SetInterval一直检查"暂停"状态。不幸的是,这不能准确工作,并且经常错过状态更改,因此让时间计数器计数。
有没有一种简单的方法可以在每次布尔值更改时调用函数?帮助将不胜感激。
谢谢,f。
谢谢你的回答。不幸的是,这并没有起到作用。
这是代码:
<html>
<head>
</head>
<body>
<h5 id="test">Audio Timer</h5>
<audio id="player" src="kerry.wav" controls></audio>
<form name="d">
<input type="text" size="8" name="d2">
<h1 id="time"></h1>
</form>
<script>
var audio = document.getElementById("player");
var millisec = 0;
var seconds = 0;
var timer;
function display() {
if (millisec >= 99) {
millisec = 0
seconds += 1
} else
millisec += 1
document.d.d2.value = seconds + "." + millisec;
timer = setTimeout("display()", 10);
}
function starttimer() {
if (timer > 0) {
return;
}
display();
}
function stoptimer() {
clearTimeout(timer);
timer = 0;
}
function startstoptimer() {
if (timer > 0) {
clearTimeout(timer);
timer = 0;
} else {
display();
}
}
function resettimer() {
stoptimer();
millisec = 0;
seconds = 0;
}
setInterval(function () {
var time = audio.paused;
if (time == false) {
startstoptimer();
}
}, 1);
</script>
</body>
</html>
不幸的是,SetInterval(function()..的速度不足以跟踪audio.paused.这似乎是我需要的。如您所见,此代码始终会启动计时器,但是当您按暂停或使用时间栏搜索音频时,它通常不会停止计时器。
知道如何做到这一点吗?
创建一个调用音频标签的变量
var yourAudio = document.getElementById("audio")
然后
yourAudio.onpause=YourFunction()
如果这不是您要找的,请发布您的代码或其中的一部分,向我们提供更多信息。
有一段时间(真的)我的页面甚至没有加载。
但我最终通过添加两个事件侦听器来调用 startstoptimer 函数,从而监听"播放"和"暂停"。
audio.addEventListener("playing", startstoptimer);
audio.addEventListener("pause", startstoptimer);
这两条线就是它所需要的:)
谢谢。
相关文章:
- 使用ajax调用中的数据而不使用async:false
- jQuery没有指定异步调用级别async:false
- 表单提交没有'调用return false后无法工作
- jquery focusin没有'调用.focus()并返回false;时无效;
- 可以't设法调用mojarra.ab(this,evt,'action',false,false
- 当 JavaScript 将禁用属性更改为 false 时,命令按钮不会调用操作
- 每当布尔值在 JavaScript 中变为 false 时调用函数
- Android WebView 应该覆盖 UrlLoad,我应该调用超级方法还是只返回 false
- cache:false 在 ajax 调用中用 URl 附加一个值
- 在 ajax 调用后将布尔值重置为 false
- Ext.window.MessageBox 可拖动 false,调用隐藏方法时出错
- 将“oscif”设置为false,或在FB.ui调用中省略dev_purchase_params:{“oscif”:tr
- 返回值 false 以停止 ajax 调用
- Jquery已延迟.多个ajax调用.deferred vs async false
- 当返回false;时,Javascript AJAX调用在firefox中失败;
- 在只调用了一次函数return false之后,表单并没有进行提交
- Return false并不阻止在javascript中调用表单提交
- 更改包含返回false的javascript的dropdownlist不会停止调用dropdownlist_Select
- 替代"async: false"用于连续的AJAX调用
- Javascript函数在条件调用中,如果第一次返回false,则不被调用