0

我正在为一个网站编写一些代码,我想创建一个 165px x 2px 的线,它会出现然后消失并继续这样做到无穷大。我用 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;
}
4

2 回答 2

1

您需要将对该函数的引用传递给setInterval. 您正在调用该函数,因此您实际上是在传递它的返回值(这是undefined因为没有明确的return声明)。

您需要删除调用括号:

setInterval(sivapokretna, 8000);
//                     ^--- No invoking parentheses here!
于 2013-04-24T09:27:17.657 回答
1

您正在调用该函数,立即运行,然后一遍又一遍地告诉setInterval运行(函数的返回值)。undefined

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

删除().

setInterval(sivapokretna, 8000)
于 2013-04-24T09:27:18.883 回答