2016-02-22 15 views
2

我試圖從現在開始在我的頁面上設置日期+2天。顯示日期從現在起2天動態在頁面

因此,這裏是我使用的代碼:

<span class="spanDate"></span><br> at 8pm EST</div> 

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)); 

document.getElementsByClassName("spanDate").innerHTML = dayName[tomorrow.getDay()] + ", " + months[tomorrow.getMonth()] + " " + tomorrow.getDate()+ ", " + tomorrow.getFullYear(); 
</script>` 

問題:

  1. 爲什麼沒有爲我工作?

  2. 應該用document.getElementsByID代替嗎? (我想在頁面上多次使用span

感謝您的幫助!

+2

'document.getElementsByClassName(「spanDate」)'返回一組元素。 –

+0

您可以使用'tomorrow.setDate(tomorrow.getDate()+ 2)'添加日期,這更容易理解 – Kruga

+2

我會永遠支持學習「只是使用它」。一旦你掌握了這些概念,你可能想看看 - 絕對驚人的 - [日期和時間庫Moment.js](http://momentjs.com/) –

回答

2

如果你使用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])。

+0

[Moment JS Docs](http://momentjs.com/docs/)廣泛而清晰。快速瀏覽,你會在你的路上。 –

+1

'.add(2,'d')'可能基於問題標題(我想添加2天)更清晰,但兩者完全相同。我總是主張使用MomentJS來處理任何不重要的事情,無論如何,這些都是非常棒的圖書館。 – SlashmanX

+0

只是想保持儘可能接近OP。但是,請添加(2,「d」);是「更清楚」。 –

0

要回答第二個問題:最好不要在同一頁面中多次使用相同的id

+0

1這不是一個答案,2這是不是有關的問題 – edc65

+0

我戰回答他的第二個問題:「喊我使用document.getElementsByID?(我想多次使用span頁面)「 – prtnkl

+0

@prtnkl實際上回答了第二部分,所以謝謝! – Veit

2

使用此:

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; 
} 

乾杯!

+0

謝謝編輯Aniket。現在看起來好多了:) – c00ki3s

+0

請注意,如果其中一天是夏時制結束的那一天,則添加2天的毫秒數不一定會使日期增加2天。最好在日期中添加2:'date.setDate(date.getDate()+ 2)'。 – RobG

+0

的確@RobG,你是對的。主要問題是,提問者想如何將最終結果添加到文檔中。結果根本沒有顯示,所以這是問題的焦點。由於這個問題還沒有被陳述去檢查其他地方的錯誤,所以我保留了這些計算的完整性。感謝您的通知。 – c00ki3s

相關問題