Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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 setTimeout不使用onmouseout_Javascript_Html - Fatal编程技术网

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);"