Javascript 如果鼠标悬停(光标)的条件超过“a”中的三个scond,如何添加;标签;?
我的问题不是动画的持续时间。 我的问题是-如果鼠标停留在标签上超过3秒。悬停效果会出现,但绝对不要在3秒钟之前加载数据。因此,仅在3秒后加载数据。下面是我的html代码,我不能添加类名和id名,因为它们都是动态的 Html:Javascript 如果鼠标悬停(光标)的条件超过“a”中的三个scond,如何添加;标签;?,javascript,jquery,html,if-statement,jquery-hover,Javascript,Jquery,Html,If Statement,Jquery Hover,我的问题不是动画的持续时间。 我的问题是-如果鼠标停留在标签上超过3秒。悬停效果会出现,但绝对不要在3秒钟之前加载数据。因此,仅在3秒后加载数据。下面是我的html代码,我不能添加类名和id名,因为它们都是动态的 Html: 您想为mouseover事件创建一个函数,用于启动计时器。如果计时器达到3000ms或更高,则调用函数更新您正在更新的内容 还要创建一个mouseout事件来清除超时 var快照超时; //在此处理(加载)数据的代码。 功能快照(数据){ snapshotTimeout
您想为mouseover事件创建一个函数,用于启动计时器。如果计时器达到3000ms或更高,则调用函数更新您正在更新的内容 还要创建一个mouseout事件来清除超时
var快照超时;
//在此处理(加载)数据的代码。
功能快照(数据){
snapshotTimeout=window.setTimeout(函数(){
警报(“警报在3秒后发生”);
}, 3000);
}
函数clearSnapshotTimeout(){
clearTimeout(快照超时);
}
编辑:如果无法将鼠标移出事件添加到html页面,则可以尝试以下操作:
var快照超时;
//在此处理(加载)数据的代码。
功能快照(数据){
snapshotTimeout=window.setTimeout(函数(){
警报(“警报在3秒后发生”);
}, 3000);
}
函数clearSnapshotTimeout(){
clearTimeout(快照超时);
}
//将mouseout事件处理程序添加到具有mouseover属性的每个元素。
var mouseOverElements=document.querySelectorAll('[onmouseover^=“snapshot(”);
对于(var i=0;i两件事,您必须为a
标记提供一些独特的特性,例如class/id/data属性,以便能够在Javascript中精确定位它。否则,您的唯一方法就是让所有a
标记对您想要创建的行为做出反应
我希望你有办法做到这一点
假设您已经给了a
标签一个id
,您应该能够做到这一点
const myLink = document.getElementById('myId');
let timeout;
myLink.on('mouseover', () => {
timeout = window.setTimeout(() => doStuff);
});
myLink.on('mouseout'), () => {
window.clearTimeout(timeout);
});
function doStuff () {
// Your logic here
}
“无法添加类/id”-是否有其他方法来标识有问题的div?是否可以添加数据-
属性?它是否有一个具有已知id/class的父级?父级父级(-parent..)等?因为所有这些都是动态的”-包括onmouseover
和style=inline etc
-动态不应该阻止您在某个地方添加类,除非有其他限制,“动态”到目前为止您尝试了什么?SetTimout/ClearTimeout似乎是显而易见的解决方案。@freedomn-m我将在函数中添加这个if contion代码(快照)快照函数也是全局的。请参考此答案……它几乎可以工作,但我需要if conditon,因为如果我实现了您的代码,那么我将添加onmouseout=“clearnapshotTimeout()”大约100页。完成3秒后加载数据,但从您的代码中不是这样。它是在鼠标悬停时加载数据,并在3秒后显示警报。这就是问题所在。这就是为什么我要查看条件…我已经编辑了我的答案,以适应向每个元素添加mouseout事件的情况。嗨,Adrian,带onmouseout onl的Html我正在工作,但是没有onmouseout的html无法工作。请检查。现在我在所有静态和动态页面上添加了onmouseover效果。现在它工作正常。感谢您为我节省时间@Adrian Roworth。
if (time >= 3000s)
{
add data
}
else
{
add another
}
const myLink = document.getElementById('myId');
let timeout;
myLink.on('mouseover', () => {
timeout = window.setTimeout(() => doStuff);
});
myLink.on('mouseout'), () => {
window.clearTimeout(timeout);
});
function doStuff () {
// Your logic here
}