这是我到目前为止所拥有的:
var timer = setInterval(function () {
$(".auctiondiv .auctiondivleftcontainer .countdown").text(sec--);
}, 1000);
这很好用,但问题出现了,因为我必须在启动时设置sec
的值,并且我页面上的每个倒计时元素都具有相同的值。因此,不是保存值并减少它,也许最好只获得每个tick的值并减少它 - 而不是在Javascript中的任何地方保存值。
如何获取.countdown元素(<p>
标记)中的文本并从中减去一个并将其分配回同一个<p>
元素?令我困惑的是,我的页面上有很多.countdown元素,我将如何浏览每一个?
我还需要确保.countdown值一旦达到零,我就能做点什么。有条件可以这么说。我想我可以使用.parent()
,但我们会看到。
任何指导?
答案 0 :(得分:3)
您可以使用jQuery each
方法迭代匹配的元素集:
var timer = setInterval(function () {
$(".countdown").each(function() {
var newValue = parseInt($(this).text(), 10) - 1;
$(this).text(newValue);
if(newValue == 0) {
//Do something
}
});
}, 1000);
我已经将选择器更改为.countdown
,因为你说你在页面上有很多这样的元素,而且我假设它们并不是全部都会被原来的选择器匹配,但是你可以显然必要时改变它。
以上是上述代码的working example。
答案 1 :(得分:1)
您应该将多次使用的元素存储在变量中以节省资源。
此外,由于setTimeout
的行为不同,我们鼓励setInterval
使用// cache elements to save resources
var $countdownElements = $( ".countdown" );
function countDown() {
$countdownElements.each( function () {
var $this = $( this ); // again, cache element for later use
var newValue = parseInt( $this.text(), 10 ) - 1;
$this.text( newValue );
if ( newValue == 0 ) {
//Do something
}
});
// call this function again in 1 second
setTimeout( countDown, 1000 );
}
countDown();
。您可以阅读here。
{{1}}