如何使用JavaScript在特定时间段内仅显示字符串?

3

我正在为学校网站制作一个实时横幅。它应该包括星期几、日期、时间和当前课程编号。前三个已经解决了,但最后一个让我头疼,因为它只需要在45分钟的时间段内显示。 我改进了昨天的代码。现在看起来像这样(CODEPEN)。 顺便说一句,感谢所有昨天帮助过我的人!特别感谢theRoot,让我的代码变得简单明了

<!-->
LIVE DATE AND DAY
<-->
    <style>
        BODY {
            font-family: arial;
        }
    </style>
    <body onload="startTime()">
        <p>
            <span style="font-size:40pt;">TODAY IS A
                <script>
                    var today = new Date();
                    var dd = today.getDate();
                    var ww = today.getDay();
                    var mm = today.getMonth();
                    var yyyy = today.getFullYear();
                    var suffix = ["st","nd","rd","th"];
                    var op = "";
                    var month = ["JANUARY","FEBUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"];
                    var day = ["MONDAY","TUESDAY","WEDNSDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"];

                    if(parseInt(dd) > 4)
                        op+=" "+day[ww-1]+" THE "+dd+suffix[3].sup()+" OF ";
                    else
                        op+=" "+day[ww-1]+" THE "+dd+suffix[(parseInt(dd)%10)-1].sup()+" OF ";
                    op+=month[parseInt(mm)-1]+" "+yyyy;
                    document.write(op);
                </script>

                <script>
                    function startTime() {
                        var today=new Date();
                        var h=today.getHours();
                        var m=today.getMinutes();
                        m = checkTime(m);
                        var am = " am";  
                        var pm = " pm";

                        if(h > 12) {
                            h =(h - 12)
                            document.getElementById('time').innerHTML = h+":"+m+pm.sup();
                        } else {
                            document.getElementById('time').innerHTML = h+":"+m+am.sup();
                        }

                        var t = setTimeout(function(){startTime()},500);

                        var period = ["WHY SO EARLY?","BEFORE SCHOOL","PERIOD 1","PERIOD 2","PERIOD 3","PERIOD 4","PERIOD 5","PERIOD 6","PERIOD 7","PERIOD 8","PERIOD 9","PERIOD 10","AFTER SCHOOL","WHY ARE STILL YOU HERE?",];
                    }

                    function checkTime(i) {
                        if (i<10) {i = "0" + i};  // add zero in front of numbers < 10
                        return i;
                    }
                </script>
               <p style="font-size:40pt; display:inline;" id="time"></p>
            </span>
        </p>
    </body>

这是我现在所拥有的内容。 谢谢。

您不能混合使用HTML代码和JavaScript。请检查您的起始和结束<script>标签。 - Anwar
@Zeratops,你的意思是不能混合使用HTML代码和JavaScript吗? - Emre Türkiş
在@Andrei Zhamoida纠正代码之前,我警告OP关于标签的完整性。 - Anwar
1个回答

1
所以您可以参考每个时段的开始时间,然后将其与时段数组相对应。这是一个更新的分支http://codepen.io/anon/pen/eNVdRq
var per=h*60+m;
for(var i=0;i<ptime.length-1;i++){
  if(per>ptime[i]&&per<ptime[i+1]){
    document.getElementById('period').innerHTML=period[i];
    break;
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接