Javascript 在第页上动态显示从现在起2天的日期

Javascript 在第页上动态显示从现在起2天的日期,javascript,date,Javascript,Date,我尝试在我的页面上设置几次日期+2天 下面是我使用的代码: <span class="spanDate"></span><br> at 8pm EST</div> 东部时间晚上8点 var dayName=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’]; var月=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’]; var明天

我尝试在我的页面上设置几次日期+2天

下面是我使用的代码:

<span class="spanDate"></span><br> at 8pm EST</div>
东部时间晚上8点

var dayName=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’];
var月=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’];
var明天=新日期();
明天.setTime(明天.getTime()+(1000*3600*48));
document.getElementsByClassName(“spanDate”).innerHTML=dayName[tomory.getDay()]+,“+months[tomory.getMonth()]+”+“+tomory.getDate()+”,“+tomory.getFullYear()”;
`
问题:

  • 为什么它对我不起作用

  • 我应该改用
    document.getElementsByID
    吗?(我想在页面上多次使用
    span


  • 谢谢你的帮助

    回答第二个问题:最好不要在同一页中多次使用相同的
    id

    使用以下方法:

    var dayName = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday','Saturday'];
    var months = ['January','February','March','April','May','June','July', 'August','September','October','November','December'];
    
    var tomorrow = new Date();
    tomorrow.setTime(tomorrow.getTime() + (1000*3600*48));
    var dt = dayName[tomorrow.getDay()] + ", " + months[tomorrow.getMonth()] + " " + tomorrow.getDate()+ ", " + tomorrow.getFullYear();
    //add [0]
    document.getElementsByClassName('spanDate')[0].innerHTML = dt;
    
    因为:

    document.getElementsByClassName("spanDate").innerHTML
    
    返回节点列表而不是元素

    编辑:

    如果您的文档中有5个span元素,您希望在其中显示此日期,则可以采用经典方式:

    document.getElementsByClassName('spanDate')[0].innerHTML = dt;
    document.getElementsByClassName('spanDate')[1].innerHTML = dt;
    document.getElementsByClassName('spanDate')[2].innerHTML = dt;
    document.getElementsByClassName('spanDate')[3].innerHTML = dt;
    document.getElementsByClassName('spanDate')[4].innerHTML = dt;
    
    或者使用任何类型的循环来迭代节点,如以下示例所示:

    var e = document.getElementsByClassName('spanDate');
    for(i=0; i < e.length; i++) {
        e[i].innerHTML = dt;
    }
    
    var e=document.getElementsByClassName('spanDate');
    对于(i=0;i

    干杯

    如果要使用Moment.js,可以按如下方式“简化”代码:

    var el = document.getElementsByClassName("spanDate")[0],
        tomorrow = moment().add(2, "d");
    
    el.innerHTML = tomorrow.format("DD, MM, YYYY");
    

    您会注意到,我在
    getElementsByClassName(“spanDate”)
    之后添加了
    [0]
    ,这是因为方法
    getElementsByClassName
    返回HTML集合(类似数组的结构)。拥有该集合后,需要提取要修改的元素(在本例中是我们找到的第一个[0])

    document.getElementsByClassName(“spanDate”)
    返回元素的集合。您可以使用
    tomory.setDate(tomory.getDate()+2)
    添加日期,这更容易理解,我总是喜欢学习而不是“只使用它”。一旦你掌握了这些概念的诀窍,你可能会想研究一下-绝对惊人的-@SebastienDaniel,那么我该如何对矩.js做同样的事情呢?@Veit在回答中回答说。。。它的显示更清晰:)1这不是答案,2这与问题I war回答他的第二个问题无关:“呼喊我使用document.getElementsByID?(我想在页面上多次使用跨度)”@prtnkl实际上回答了第二部分,所以谢谢!谢谢你的编辑。现在看起来好多了:)请注意,如果其中一天是夏时制结束的日子,那么增加2天的毫秒并不一定会使日期增加2天。最好在日期中添加2:
    date.setDate(date.getDate()+2)
    。事实上@RobG,您是正确的。主要问题是,提问者想如何将最终结果添加到文档中。结果根本没有显示出来,所以这是问题的焦点。我把那些计算结果原封不动地保留了下来,因为这个问题还没有被陈述出来以检查其他地方是否有错误。谢谢你的通知。内容广泛而清晰。快速浏览一下,您就可以上路了。
    .add(2,'d')
    根据问题标题可能更清晰(我想添加2天),但两者的作用完全相同。我一直主张使用MomentJS处理任何与日期无关的事情,不管怎样,都是很棒的库。只是想让它尽可能靠近OP。但是,是的,添加(2,“d”);是“更清晰”。每次我想在页面上使用它时,只需添加
    document.getElementsByClassName('spanDate')[0]
    。@SebastienDaniel他们实际上做的不是同一件事。如果其中一天是夏令时结束的那一天,那么它是25小时长(在大多数有夏令时的地方),所以在那天的00:00:00加上24小时只得到23:00,它不会改变日期。因此,是的,在日期上加2天比加48小时要好得多。
    var el = document.getElementsByClassName("spanDate")[0],
        tomorrow = moment().add(2, "d");
    
    el.innerHTML = tomorrow.format("DD, MM, YYYY");