如何在一段时间后更改文本的颜色

How to Change color of a text after a time period?

本文关键字:文本 颜色 一段时间      更新时间:2023-09-26

我创建了一个公告板。我想在前 48 小时内以红色显示通知。48小时后,通知的颜色将发生变化。现在我应该在我的代码中添加什么?

布告栏的 HTML 正文 -

<div class="col-md-4">
            <div class="widget-item" style="padding-top:0px;margin-top:0px;">
                        <div class="widget-main-title">
                            <h4 class="widget-title">Notice Board</h4>
                        </div> <!-- /.widget-main-title -->
                        <marquee id="dvNotice" FACE="courier" BEHAVIOR="SCROLL" height="247px" onmouseout="this.setAttribute('scrollamount', 2, 0);" onmouseover="this.setAttribute('scrollamount', 0, 0);" scrollamount="2" direction="up" style="text-align: left;">
                            <%--<div class="widget-inner" id="dvNotice">
                            </div> --%><!-- /.widget-inner -->
                        </marquee>
                    <!-- /.request-information -->
            </div> <!-- /.widget-item -->
        </div>

JQuery/JavaScript -

$(document).ready(function () {
PageMethods.loadNotice('', loadNoticeSuccess);
});
function loadNoticeSuccess(result) {
        $("#dvNotice").html('');
        var html = "";
        for (var i = 0; i < result.length; i++) {
            var month_value = result[i].PublishedDate.getMonth();
            var day_value = result[i].PublishedDate.getDate();
            html += "<div class='"event-small-list clearfix'">";
            html += "<div class='"calendar-small'"><span class='"s-month'">" + months[month_value] + "</span><span class='"s-date'">" + day_value + "</span></div>";
            //html += "<div class='"event-small-details'"><h5 class='"event-small-title'"><a href='"event-single.html'">" + result[i].Title + "</a></h5><p class='"event-small-meta small-text'">" + result[i].Description + "</p></div></div>";
            html += "<div class='"event-small-details'"><h5 class='"event-small-title'"><a href='"Pages/NoticeBoard/NoticeDetails.aspx?noticeid=" + result[i].NoticeID + "'">" + result[i].Title + "</a></h5><p class='"event-small-meta small-text'"></p></div></div>";
        }
        html += "<div class='"event-small-list clearfix'" style='"text-align:right;padding:0;'"><a href='"Pages/NoticeBoard/NoticeBoard.aspx'">More</a></div>";
        $("#dvNotice").append(html);
    }

用于加载公告板的 C# 代码隐藏 -

[WebMethod]
    public static List<Notice> loadNotice(string value)
    {
        IList<Notice> notice = NoticeManager.GetTopPublishedNotice();
        if (notice == null)
        {
            notice = new List<Notice>();
        }
        return notice.ToList();
    }

我假设您正在使用一些CMS来添加这些通知。一种选择是检查通知/内容创建时间和现在页面加载之间的差异。这可以通过javascript get Time函数轻松完成。

如果您没有这样的值,那么只需将其添加到CMS中,即可存储创建日期和时间的元数据。我遇到的大多数CMS都有这种可能性。

希望这个理论能有所帮助。

你能在将 html 附加到div dvNote 后尝试这段代码吗,

setTimeout(function () {
        $('#dvNotice').css('color','yellow'); 
 }, 172800000);

我正在利用这个答案中的函数来计算两个日期的差值,基于假设 48 小时 == 2 天

var _MS_PER_DAY = 1000 * 60 * 60 * 24;
// a and b are javascript Date objects
function dateDiffInDays(a, b) {
  // Discard the time and time-zone information.
  var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
  var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());
  return Math.floor((utc2 - utc1) / _MS_PER_DAY);
}
// tweaked OP code
function loadNoticeSuccess(result) {
    $("#dvNotice").html('');
    var html = "";
    for (var i = 0; i < result.length; i++) {
        var isPast48Hours = dateDiffInDays(new Date(), result[i].PublishedDate) > 2;    
        if (isPast48Hours) { /*setup html for default color*/ }        
        else { /*setup html for red color */ }
        // rest of code, using the html you setup above for the variable color
    }    
}

这里缺少的是条目年龄的实时验证(和反应,切换颜色):如果页面在发布日期后 47 小时 59 分钟加载,则条目将为红色并保持红色