moment.jsを使用する私は、イベントのリストを通過し、6時間以上前に開始して終了したものを隠すスクリプトを作成しました。影響を受けるdivをjavascriptでラップする
var x=document.getElementsByClassName("event");
for (var i=0;i<x.length;i++) {
var starttime = moment((x[i].getElementsByClassName("start")[0].childNodes[0].nodeValue), 'YYYY-MM-DD HH:mm');
var cutoff = moment().subtract(6, 'hours').format('YYYY-MM-DD HH:mm');
if (starttime.isBefore(cutoff)) {
var expired=(x[i].getElementsByClassName("event-container")[0]);
expired.style.display = "none";
}
}
スクリプトは正常に機能しますが、divを完全に非表示にすることは最適な方法ではありません。私は代わりに、あなたがまだそれらを表示したい場合に開くことができるdivにすべての期限切れのイベントをラップするのが好きです。それをどうやって行うのですか?これは、あなたが使用することができますappendChild()
とoldEvents
のdivにevent
div要素を追加します。この
var oldEvents = document.getElementById("oldEvents");
var x=document.getElementsByClassName("event");
for (var i=0;i<x.length;i++) {
var starttime = moment((x[i].getElementsByClassName("start")[0].childNodes[0].nodeValue), 'YYYY-MM-DD HH:mm');
var cutoff = moment().subtract(6, 'hours').format('YYYY-MM-DD HH:mm');
if (starttime.isBefore(cutoff)) {
oldEvents.appendChild(x[i]);
}
}
であなたのjavascriptを交換し
<div class="openclose">
<div class="event">
<div class="event-container">
Old event info goes here
</div>
</div>
<div class="event">
<div class="event-container">
Old event info goes here
</div>
</div>
</div>
<div class="event">
<div class="event-container">
New event info goes here
</div>
</div>
<div class="event">
<div class="event-container">
New event info goes here
</div>
</div>
ああ、既存のdivにそれらを追加することは考えていませんでした。それは完璧に働いた。ありがとうございました! – yayheartbeat
ときどき小さなことが最高です:) – Weedoze