Javascript setTimeout不使用onmouseout
首先,以下是有问题的代码行:Javascript setTimeout不使用onmouseout,javascript,html,Javascript,Html,首先,以下是有问题的代码行: <a onmouseover="hoverDisplay(this)" onmouseout="setTimeout(unHoverDisplay(), 3000);" href="http://rabbit.jpg"> Rabbit </a><br> 分别显示和删除图像,但当我试图延迟取消Overdisplay()时,它不起作用;当我的鼠标悬停在链接上时,图像消失了 我尝试在setTim
<a onmouseover="hoverDisplay(this)" onmouseout="setTimeout(unHoverDisplay(), 3000);" href="http://rabbit.jpg">
Rabbit
</a><br>
分别显示和删除图像,但当我试图延迟取消Overdisplay()时,它不起作用;当我的鼠标悬停在链接上时,图像消失了
我尝试在setTimeout之后添加和删除分号(不确定是否需要分号),并且尝试延迟hoverDisplay函数,但没有成功。除了延迟问题之外,这两个功能也能正常工作
这似乎是一个简单的问题,但我不知道我做错了什么。谢谢你的帮助。谢谢
不确定这是否必要,但以下是两个函数的实现:
//Display image for link that you hover over
var address; //Address of image
var toBeDisplayed; //Declaring img object
var maxHeight=screen.height;
var maxWidth=screen.width;
var invisible=document.getElementById("invisible"); //the div in which the image is contained
function hoverDisplay(imageLink)
{
address=imageLink.getAttribute("href"); //get address
toBeDisplayed=document.createElement("img"); //create img
toBeDisplayed.setAttribute("src", address); //give img the address
//Resize img if it doesnt fit on the screen
if(toBeDisplayed.height > maxHeight)
{
toBeDisplayed.style.height="" + maxHeight + "px";
}
else if(toBeDisplayed.width > maxWidth)
{
toBeDisplayed.style.width="" + maxWidth + "px";
}
invisible.appendChild(toBeDisplayed); //display image by adding it as a child to a div
invisible.style.visibility="visible"; //make div visible
toBeDisplayed.style.border="solid yellow 5px";
}
//Remove image once you hover out of the link
function unHoverDisplay()
{
//Removes all children of the div
while(invisible.firstChild)
{
invisible.removeChild(invisible.firstChild); //remove img by removing it as a child
}
invisible.style.visibility="hidden";
}
问题在于
setTimeout
的第一个参数中unhuverdisplay后的括号会导致立即执行unhuverdisplay。只需通过其标识符传递函数,而不使用括号:
onmouseout="setTimeout(unHoverDisplay, 3000);"
您将函数作为参数传递给setTimeout,而不是调用它。因此,不需要这些括号和函数名,只需要函数名本身 onmouseout=“设置超时(取消显示,3000)”
onmouseout="setTimeout(unHoverDisplay, 3000);"