每次布尔值在 JavaScript 中变为假时调用函数
invoke function everytime a boolean becomes false in JavaScript
每当 html 音频元素的 "paused" 属性变为 false 时,我都会尝试调用一个函数。
我有一个计时器,可以计算实际收听音频文件的时间(我也想在使用时间栏搜索时排除时间)。
我尝试使用 SetInterval 一直检查 "paused" 的状态。不幸的是,这并不能准确工作,并且经常会错过状态更改,因此让时间计数器继续计数。
每次布尔值发生变化时,是否有一种简单的方法来调用函数?
非常感谢您的帮助。
谢谢,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()
如果这不是您要查找的内容,post 您的代码或其中的一部分,请向我们提供更多信息。
有一段时间(真的)我的页面甚至没有加载。
但我最终通过添加两个监听 "playing" 和 "pause" 的事件监听器使它栩栩如生调用 startstoptimer 函数。
audio.addEventListener("playing", startstoptimer);
audio.addEventListener("pause", startstoptimer);
只需要这两行 :)
谢谢。
每当 html 音频元素的 "paused" 属性变为 false 时,我都会尝试调用一个函数。
我有一个计时器,可以计算实际收听音频文件的时间(我也想在使用时间栏搜索时排除时间)。
我尝试使用 SetInterval 一直检查 "paused" 的状态。不幸的是,这并不能准确工作,并且经常会错过状态更改,因此让时间计数器继续计数。
每次布尔值发生变化时,是否有一种简单的方法来调用函数?
非常感谢您的帮助。
谢谢,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()
如果这不是您要查找的内容,post 您的代码或其中的一部分,请向我们提供更多信息。
有一段时间(真的)我的页面甚至没有加载。
但我最终通过添加两个监听 "playing" 和 "pause" 的事件监听器使它栩栩如生调用 startstoptimer 函数。
audio.addEventListener("playing", startstoptimer);
audio.addEventListener("pause", startstoptimer);
只需要这两行 :)
谢谢。