Javascript 2秒后隐藏/显示图像

Javascript 2秒后隐藏/显示图像,javascript,html,css,visibility,Javascript,Html,Css,Visibility,所以我需要每隔2秒就有一个图像交替出现和消失,我一直在尝试使用javascript,但我被卡住了,我觉得这很简单,但我无法解决,非常感谢任何帮助 HTML <body onload="Show()"> <div align="center"> <img id="image" src="image1.png" height="200" width="200"> 在您的setTimeout()中,交换显示和隐藏。另外,删除var Cntr。我不需要它 funct

所以我需要每隔2秒就有一个图像交替出现和消失,我一直在尝试使用javascript,但我被卡住了,我觉得这很简单,但我无法解决,非常感谢任何帮助

HTML

<body onload="Show()">
<div align="center">
<img id="image" src="image1.png" height="200" width="200">
在您的setTimeout()中,交换显示和隐藏。另外,删除var Cntr。我不需要它

function Hide()
{

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

setTimeout("Show()", 2000);

}

function Show() 
{

document.getElementbyId("image").style.visibility="visible";

setTimeout("Hide()", 2000);


}

你的代码有很多问题

  • 正如Juhana提到的,您使用的
    setTimeout
    错误

  • Hide()
    未在任何地方调用

  • 以下是您可以做的:

    JavaScript HTML
    。。。
    

    .

    我将您的脚本更改为:

    var hidden = false;
    
    setInterval(function(){
        document.getElementById("image").style.visibility= hidden ? "visible" : "hidden";
        hidden = !hidden;
    },2000);
    
    并从您的
    标签中删除了
    onload
    功能

    这里还有一个。试试这个-

    $(函数($){
    setInterval(函数(){
    如果($('#image')。是(':visible'))
    $('#image').hide();
    其他的
    $('#image').show();
    }, 2000);
    
    });

    使用jQuery而不是原始JS,它更干净、更简单。在递归中使用Delay和FadeTo函数,只需使用一个简单的函数即可。在页面加载时调用此函数

    function Flicker(){
        $("#MyImage").delay(1500).fadeTo(300,0).delay(1500).fadeTo(300,1, Flicker);
    }
    
    其中:#MyImage是图像的ID

    你可以看到这个工作@


    希望这能有所帮助。

    要么是
    setTimeout(Hide,2000)
    要么
    setTimeout(“Hide()”,2000)
    ,最好是前者。即使有了这个修复,逻辑也关闭了;页面加载时对
    Show()
    的第一次调用将
    Cntr
    设置为0。实际上,您根本不需要变量,我认为OP不需要jQuery解决方案。没有
    jQuery
    标签。谢谢你,终于让它与你的调整一起工作了
    <body onload="blink()">...</body>
    
    var hidden = false;
    
    setInterval(function(){
        document.getElementById("image").style.visibility= hidden ? "visible" : "hidden";
        hidden = !hidden;
    },2000);
    
    function Flicker(){
        $("#MyImage").delay(1500).fadeTo(300,0).delay(1500).fadeTo(300,1, Flicker);
    }