为了账号安全,请及时绑定邮箱和手机立即绑定

“setTimeout”javascript 函数不起作用的代码有什么问题?

“setTimeout”javascript 函数不起作用的代码有什么问题?

沧海一幻觉 2023-03-24 14:21:57
对于我的网站,我想使用显示一些内容mouseover,并且即使在采取操作时也希望显示内容几秒钟,mouseout因为内容包含一些有用的链接。为此,我使用setTimeoutjavascript 函数将函数延迟mouseout10 秒。但不幸的是它不起作用。<body>    <img src="images/1.jpg" alt="some_text" id="test1" style="height: 450px; width: 300px;">    <img src="images/1.jpg" id="test2" alt="some_text" style="height: 450px; width: 300px;">    <script>        document.getElementById("test1").addEventListener("mouseover", mouseOver);        document.getElementById("test1").addEventListener("mouseout", mouseOut);        function mouseOver() {            document.getElementById("test2").style.opacity = "0";            document.getElementById("test2").style.visibility = "hidden";        }        function mouseOut() {            document.getElementById("test2").style.opacity = "1";            document.getElementById("test2").style.visibility = "visible";        }        setTimeout(mouseOut, 10000);    </script></body>
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

您应该调用setTimeout内部事件处理程序,如下所示:


document.getElementById("test1").addEventListener("mouseout", mouseOut);

function mouseOut() {

    setTimeout(mouseOut2, 10000);

}

function mouseOut2() {

    document.getElementById("test2").style.opacity = "1";

    document.getElementById("test2").style.visibility = "visible";

}


查看完整回答
反对 回复 2023-03-24
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

SetTimeout 应该在 mouseOut 里面


        document.getElementById("test1").addEventListener("mouseover", mouseOver);

        document.getElementById("test1").addEventListener("mouseout", mouseOut);


        function mouseOver() {

            document.getElementById("test2").style.opacity = "0";

            document.getElementById("test2").style.visibility = "hidden";

        }


        function mouseOut() {

                setTimeout(()=>{

                            document.getElementById("test2").style.opacity = "1";

                            document.getElementById("test2").style.visibility = "visible";

            }, 6000);


        }

<body>

    <img src="images/1.jpg" alt="some_text" id="test1" style="height: 450px; width: 300px;">

    <img src="images/1.jpg" id="test2" alt="some_text" style="height: 450px; width: 300px;">


</body>


查看完整回答
反对 回复 2023-03-24
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

由于您绑定mouseOut为相应事件的事件处理程序,它仍将被执行。您setTimeout添加的只会再调用mouseOut一次,与鼠标事件无关。


如果您想延迟处理鼠标移开事件时发生的事情,请执行以下操作:


        function mouseOut() {

            setTimeout(function () {

                document.getElementById("test2").style.opacity = "1";

                document.getElementById("test2").style.visibility = "visible";

            }, 10000);

        }

但是请注意,这可能不是那么用户友好。用户可能希望该行为与他们的鼠标移动有关,但现在连接丢失了——肯定有 10 秒的超时。


查看完整回答
反对 回复 2023-03-24
  • 3 回答
  • 0 关注
  • 206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号