每当布尔值在 JavaScript 中变为 false 时调用函数

invoke function everytime a boolean becomes false in JavaScript

本文关键字:false 调用 函数 布尔值 JavaScript      更新时间:2023-09-26

>每次 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);

这两条线就是它所需要的:)
谢谢。