Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript onemouseover激活的计时器应该只倒计时一次_Javascript_Html - Fatal编程技术网

javascript onemouseover激活的计时器应该只倒计时一次

javascript onemouseover激活的计时器应该只倒计时一次,javascript,html,Javascript,Html,我的计时器由onmouseover功能激活 我的css动画在15秒后完成,但我的计时器没有。每次onmouseover后,时间将重新激活,而不是准时倒计时 <span onmouseover="mouseHover()">Hover this text</span> 注意:计时器正在工作(小提琴除外) 如果你有任何建设性的反馈,请告诉我!谢谢 JSFIDLE不适合我,我不知道为什么 如果我理解正确,您可能想做如下操作 在“var timer”之后,应该编写一个变量,如“

我的计时器由onmouseover功能激活

我的css动画在15秒后完成,但我的计时器没有。每次onmouseover后,时间将重新激活,而不是准时倒计时

<span onmouseover="mouseHover()">Hover this text</span>
注意:计时器正在工作(小提琴除外)

如果你有任何建设性的反馈,请告诉我!谢谢


JSFIDLE不适合我,我不知道为什么

如果我理解正确,您可能想做如下操作

在“
var timer
”之后,应该编写一个变量,如“
var executed=False
”。 然后,在
startTimer()
函数的末尾,编写“
let executed=True
”——这样,函数第一次运行后,变量
executed
现在将设置为
True
。 然后,您需要确定在运行函数之前是否执行过代码,因此在
函数mouseHover()
中写入

if (executed == False){
    startTimer()
};
因此,该函数只有在以前没有运行过的情况下才会运行

编辑:
mouseHover()
函数放在“executed”变量之后,但放在
startTimer()函数之前

编辑2: 我不应该使用“let executed=…”,而应该使用“executed=…”
让我知道这是否有效。

如果我理解正确,您可能需要执行以下操作

在“
var timer
”之后,应该编写一个变量,如“
var executed=False
”。 然后,在
startTimer()
函数的末尾,编写“
let executed=True
”——这样,函数第一次运行后,变量
executed
现在将设置为
True
。 然后,您需要确定在运行函数之前是否执行过代码,因此在
函数mouseHover()
中写入

if (executed == False){
    startTimer()
};
因此,该函数只有在以前没有运行过的情况下才会运行

编辑:
mouseHover()
函数放在“executed”变量之后,但放在
startTimer()函数之前

编辑2: 我不应该使用“let executed=…”,而应该使用“executed=…” 让我知道这是否有效。

编辑: 我误解了你的问题。您只需要执行一次。 添加新变量以标记事件是否已启动

var timer, started = false;

var startTimer = function() {

    if(started) return;
    started = true;

    window.clearTimeout(timer);
    ...

}

window.mouseHover = function() {
    startTimer();
}
编辑: 我误解了你的问题。您只需要执行一次。 添加新变量以标记事件是否已启动

var timer, started = false;

var startTimer = function() {

    if(started) return;
    started = true;

    window.clearTimeout(timer);
    ...

}

window.mouseHover = function() {
    startTimer();
}

我从JSFiddle复制并尝试了示例代码,我觉得还可以。18:39:29.388 test.html:7 hover 18:39:30.120 test.html:7 hover 18:39:30.986 test.html:7 hover 18:39:31.803 test.html:7 hover 18:39:34.812 test.html:10 yeh 18:39:42.482 test.html:7 hover 18:39:42.766 test.html:7 hover 18:39:43.330 test.html:7 hover 18:39:43.680 test.html:7 hover 18:39:46.694 test.html:10 yehMy问题不清楚。我现在更改了,所以你的代码除了只希望事件发生一次之外还能工作吗?是的,对不起。我的想法太复杂了,但仅此而已。我从JSFIDLE复制并尝试了示例代码,我觉得还可以。18:39:29.388 test.html:7 hover 18:39:30.120 test.html:7 hover 18:39:30.986 test.html:7 hover 18:39:31.803 test.html:7 hover 18:39:34.812 test.html:10 yeh 18:39:42.482 test.html:7 hover 18:39:42.766 test.html:7 hover 18:39:43.330 test.html:7 hover 18:39:43.680 test.html:7 hover 18:39:46.694 test.html:10 yehMy问题不清楚。我现在更改了,所以你的代码除了只希望事件发生一次之外还能工作吗?是的,对不起。我的想法太复杂了,但仅此而已。你能通过这把小提琴帮我吗?不确定。但我认为它奏效了。我放弃了我的剧本,因为它太乱了。不过,我正在制作一个新的。如果我有问题,我会告诉你的,好吗?@webstars当然,我建议在Javascript代码中加入console.log()语句,然后在Chrome开发者工具中,转到“console”,这样当你运行脚本时,你就能看到这些语句的输出。然后,通过查看打印了哪些语句,您将能够看到哪些代码运行,哪些代码中断。你能用这把小提琴帮我吗?不确定。但我认为它奏效了。我放弃了我的剧本,因为它太乱了。不过,我正在制作一个新的。如果我有问题,我会告诉你的,好吗?@webstars当然,我建议在Javascript代码中加入console.log()语句,然后在Chrome开发者工具中,转到“console”,这样当你运行脚本时,你就能看到这些语句的输出。然后,通过查看打印了哪些语句,您将能够看到哪些代码运行,哪些代码中断。我不确定如何使用鼠标盖将数据带到函数:
onmouseover=“mouseHover(data)”
函数mouseHover(data){}
我不确定如何使用鼠标盖将数据带到函数:
onmouseover=“mouseHover(data)”
函数mouseHover(data){}