更新从x秒开始向上计数的单个跨度标记

时间:2013-09-24 19:38:19

标签: jquery

我有几个<span>个标签可以容纳几秒钟 例如:
    <span class="timeout">27</span>
    <span class="timeout">58</span>

我每次尝试将它们递增1秒,但是我遇到了一些困难,即它在<span>标签中放错了数据。

我一定做错了,下面是我试图使用的代码..
它一定是错的,充满了错误,但是,我仍然在努力学习它; - )

function timer() {
    var self = $(this);
    var idx  = $("span.timeout");
    var sec = parseInt(self.find('span.timeout').text())
    var interval = setInterval(function() {
        idx.each(function() {
            idx.text(sec++)
        });
    }, 1000);
}

提前致谢,
- 罗伯特。

1 个答案:

答案 0 :(得分:1)

你想这样做:

function timer() {
    var self = $(this);
    var idx = $("span.timeout");
    //console.log(self.find('span.timeout').text()); //gets you nothing
    var interval = setInterval(function () {
        idx.text(function (_, txt) { //use .text()
            return parseInt(txt, 10) + 1; //convert the current text to int and increment it.
        });
    }, 1000);
}

<强> Fiddle

你的问题在这里var sec = parseInt(self.find('span.timeout').text())自我只是一个窗口在你的情况下,你正试图在其中找到跨度并获取它的文本。这对你没有任何帮助,你正在做parseInt什么都没有让你NAN然后你用它进行计算,这是错误的。因此,您可以使用文本函数的回调并获取该范围的当前文本值,然后返回该范围的更新值。