【问题标题】:JavaScript get days with words, five ahead of current dayJavaScript 用文字获取天数,比当前天提前 5 天
【发布时间】:2013-05-24 13:15:02
【问题描述】:

我想在我网站上的一些 div 中添加 5 个即将到来的日期名称。我已经为日期名称创建了数组,然后我从中调用值并添加天数。该方法仅适用于前一天,然后数组结束,从第 2 天到第 5 天它回显“未定义”。

请帮忙?

var weekday=new Array(7);
weekday[0]="Nedelja";
weekday[1]="Ponedeljek";
weekday[2]="Torek";
weekday[3]="Sreda";
weekday[4]="Četrtek";
weekday[5]="Petek";
weekday[6]="Sobota";
var dan = weekday[today.getDay()];

var dan_1 = weekday[today.getDay()+1];
document.getElementById("day1").innerHTML = dan_1;
var dan_2 = weekday[today.getDay()+2];
document.getElementById("day2").innerHTML = dan_2;
var dan_3 = weekday[today.getDay()+3];
document.getElementById("day3").innerHTML = dan_3;
var dan_4 = weekday[today.getDay()+4];
document.getElementById("day4").innerHTML = dan_4;
var dan_5 = weekday[today.getDay()+5];
document.getElementById("day5").innerHTML = dan_5;

谢谢你们!

【问题讨论】:

    标签: javascript arrays function time days


    【解决方案1】:

    嗯,你需要用 7(一周中的天数)% 来表示

    var weekday=new Array(7);
    weekday[0]="Nedelja";
    weekday[1]="Ponedeljek";
    weekday[2]="Torek";
    weekday[3]="Sreda";
    weekday[4]="Četrtek";
    weekday[5]="Petek";
    weekday[6]="Sobota";
    var dan = weekday[today.getDay()%7];
    
    var dan_1 = weekday[(today.getDay()+1)%7];
    document.getElementById("day1").innerHTML = dan_1;
    var dan_2 = weekday[(today.getDay()+2)%7];
    document.getElementById("day2").innerHTML = dan_2;
    var dan_3 = weekday[(today.getDay()+3)%7];
    document.getElementById("day3").innerHTML = dan_3;
    var dan_4 = weekday[(today.getDay()+4)%7];
    document.getElementById("day4").innerHTML = dan_4;
    var dan_5 = weekday[(today.getDay()+5)%7];
    document.getElementById("day5").innerHTML = dan_5;
    

    例如:如果today.getDay() 返回 5,则接下来的 5 天是 10,这在您的数组中不存在。当你 % 7 时,你会返回 3(下周)

    【讨论】:

      【解决方案2】:

      您可以在数组访问中添加一个模% 操作,以防止溢出并从头重新启动:

      // ...
      var dan_1 = weekday[(today.getDay()+1)%7];
      document.getElementById("day1").innerHTML = dan_1;
      var dan_2 = weekday[(today.getDay()+2)%7];
      document.getElementById("day2").innerHTML = dan_2;
      var dan_3 = weekday[(today.getDay()+3)%7];
      document.getElementById("day3").innerHTML = dan_3;
      var dan_4 = weekday[(today.getDay()+4)%7];
      document.getElementById("day4").innerHTML = dan_4;
      var dan_5 = weekday[(today.getDay()+5)%7];
      document.getElementById("day5").innerHTML = dan_5;
      

      Example Fiddle

      【讨论】:

        【解决方案3】:

        您的问题是以合乎逻辑的方式推进这一天。这是通过添加到当前日期并从除以 7 中选择余数(模,%)来实现的。请参阅下面代码中的(dan + i) % 7 部分。

        我将使用 Khanh TO’s answer 中已经固定的代码并以更简洁的方式编写它。现在你的代码有点重复,这可以通过使用数组文字和循环来帮助。

        var today = new Date();
        var weekday = ["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"];
        var dan = today.getDay();
        for (var i = 1; i <= 5; i++) {
            var elem = document.getElementById("day" + i);
            elem.innerHTML = weekday[(dan + i) % 7];
        }
        

        我相信看到更优雅的风格对你有好处。

        【讨论】:

        • 谢谢帕莱克,这样好多了。下次我会做得更好。尽管您不应该在每个循环中重新实例化 elem 变量。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-18
        • 2021-08-25
        • 2022-08-04
        相关资源
        最近更新 更多