Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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设置超时设置间隔_Javascript_Settimeout_Setinterval - Fatal编程技术网

JavaScript设置超时设置间隔

JavaScript设置超时设置间隔,javascript,settimeout,setinterval,Javascript,Settimeout,Setinterval,我正在为一个网站写一些代码,我想创建一个165px2px的行,它会出现然后消失,并继续无限地这样做。我用JavaScript编写了以下代码: function sivapokretna() { document.getElementById("pokretnasiva").style.width= "165px"; setTimeout("document.getElementById('pokretnasiva').style.width= '0px';", 4

我正在为一个网站写一些代码,我想创建一个165px2px的行,它会出现然后消失,并继续无限地这样做。我用JavaScript编写了以下代码:

function sivapokretna() {
        document.getElementById("pokretnasiva").style.width= "165px";
        setTimeout("document.getElementById('pokretnasiva').style.width= '0px';", 4000);
}

function sivo() {
    setInterval(sivapokretna(), 8000);
}
如您所见,在第一个函数中,我将div元素的大小从0更改为165,然后在延迟后将其返回到0。出于某种原因,虽然我在第二个函数中使用了setInterval,但它只执行了一次。不要混淆,我已经用CSS3 3秒转换完成了更改。下面是正在更改的元素代码的CSS部分

#pokretnasiva {
    width: 0px;
    height: 2px;
    background: #ff0000;
    transition: width 3s;
}

您需要将对函数的引用传递到
setInterval
。您正在调用函数,因此实际上是在传递它的返回值(这是
未定义的
,因为没有显式的
返回
语句)

您需要删除调用括号:

setInterval(sivapokretna, 8000);
//                     ^--- No invoking parentheses here!

您正在调用函数,立即运行,然后告诉
setInterval
反复运行
undefined
(函数的返回值)

您需要传递函数,而不是调用函数并传递其返回值

卸下
()


谢谢,成功了!但现在开始时有8秒的延迟。。。我怎样才能让它立即开始改变?@user1687538-在调用
setInterval
之前只需调用
sivapokretna
。例如:
sivapokretna();设定间隔(sivapokretna,8000)
setInterval(sivapokretna, 8000)