【问题标题】:Change Text inside div after specific time在特定时间后更改 div 内的文本
【发布时间】:2023-04-05 16:48:01
【问题描述】:

我正在为一场足球比赛准备一个 jQuery Countdown (http://www.littlewebthings.com/projects/countdown/)。倒计时完成后,显示oncomplete函数。

我希望 jQuery 在倒计时完成 90 分钟后将 div 内的“Live”字样更改为 Full Time。

这是代码

<div id="countdown">
    <div class="dash days_dash">
        <span class="dash_title">days</span>
        <div class="digit">0</div>
        <div class="digit">0</div>
    </div>

    <div class="dash hours_dash">
        <span class="dash_title">hours</span>
        <div class="digit">0</div>
        <div class="digit">0</div>
    </div>

    <div class="dash minutes_dash">
        <span class="dash_title">minutes</span>
        <div class="digit">0</div>
        <div class="digit">0</div>
    </div>

    <div class="dash seconds_dash">
        <span class="dash_title">seconds</span>
        <div class="digit">0</div>
        <div class="digit">0</div>
    </div>
</div>

<div class="message" id="complete" style="display: none;">Live</div>

<script language="javascript" type="text/javascript">
    jQuery(document).ready(function() {
        $('#countdown').countDown({
            targetDate: {
                'day':      11,
                'month':    4,
                'year':     2016,
                'hour':     13,
                'min':      0,
                'sec':      0
            },
            onComplete: function() { 
            $('#countdown').addClass('ended');
            $('#complete').slideDown(); 
            }
        });
    });
</script>

【问题讨论】:

  • 为什么不使用纯 JavaScript?
  • 只是为了澄清。您的意思是要将文本“Live”替换为“Full Time”吗?
  • 我会编辑我的问题

标签: javascript jquery time


【解决方案1】:

您可以使用以下命令简单地将 90 分钟添加到日期对象:var newDate = new Date(originalDate.getTime() + 90 * 60000);

使用这个新日期,您可以检查当前日期是否匹配或超过新日期。通过Date.now() 获取当前日期。将这一切加起来会导致以下结果:

// Original date = March 30 2016 14:00:00
var minutes = 90,
    originalDate = new Date(1459339200000);
    timedDate = new Date(originalDate.getTime() + minutes * 60000);

// timedDate = originalDate + 90 minutes.

if (Date.now() >= timedDate) {
    // We are now 90 minutes later
    // Replace div text.
}

if-statement 内,您可以替换 div 文本。我建议只使用一个 div 并替换文本;而不是有两个单独的 div。

【讨论】:

  • 他想设置一个计时器;)
【解决方案2】:

以@Matthjs 在 cmets 中所说的内容为基础。这段代码会很好用:

    var specificDate = 1459346400000; //which is what March 30th 2016 is
    var timeleft = specificDate - Date.now();
    setInterval(update, timeleft);
    function update(){
    if (Date.now() >= specificDate) { 
    document.getElementById("output").innerHTML = "Time's Up";
     }   
     }
&lt;div id="output"&gt;Still got time!&lt;/div&gt;

这将在时间到时检查 if 循环。

【讨论】:

  • (a) 它没有解决 90 分钟的加法问题,并且 (b) 通过使用 setInterval,它会每隔 timeleft 重复一次,而不是只触发一次。
  • 是的,我在编辑后没有更改@Timeout 的评论
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 2020-05-16
  • 2021-10-27
  • 1970-01-01
  • 2019-01-06
  • 2019-05-26
  • 2013-04-22
相关资源
最近更新 更多