2013-01-24 82 views
1

我在頁面中有一堆時間戳,我希望Javascript將其轉換爲用戶的本地時區。在我的模板中,我將ISO格式的時間戳放入特殊的跨度類中,並且要遍歷每個跨度進行轉換。這裏是我的代碼:使用jQuery從各自的值更新多個span文本

$('.tzdate').each(function(){ 
    $(this).text(Date($(this).val())); 
    }); 

轉換工作完美。唯一的問題是每個跨度都更新爲相同的值。我認爲在$ .each()中使用$(this)會起作用,但它似乎不適用於Chrome或Firefox。

有什麼建議嗎?


VisioN的回答讓我開始了,因爲它現在實際上正在進行日期轉換,而不僅僅是在腳本運行時使用時間戳。現在的問題是設置文本到日期似乎沒有工作。一些更新的代碼:

$(".tzdate").each(function(index) { 
    console.log(index + ": " + $(this).text()); 
    console.log(index + ": " + new Date($(this).text())); 
    var a = new Date($(this).text()) 
    $(this).text (a) 
}); 

輸出:

0: 2013-01-24T18:42:21 
0: Thu Jan 24 2013 13:42:21 GMT-0500 (EST) 
1: 2013-01-24T18:35:08 
1: Thu Jan 24 2013 13:35:08 GMT-0500 (EST) 
2: 2013-01-24T18:42:21 
2: Thu Jan 24 2013 13:42:21 GMT-0500 (EST) 
3: 2013-01-24T18:40:27 
3: Thu Jan 24 2013 13:40:27 GMT-0500 (EST) 

但跨度的文本不會實際更新。思考?謝謝!

[最終編輯]
在設置跨度文本時,需要在Date對象後添加一個.toString()。

回答

2

您忘記了new關鍵字。

這將創建一個新的Date對象了ISO日期字符串,並將解決問題:

$(this).text(new Date(this.value).toString()); 
+0

謝謝,我想通了這一點,你發佈你的答案之後,但我還是遇到了一些麻煩。你能看看我的編輯? – Joseph

+0

看起來我只需要一個.toString()就可以了。謝謝你的幫助! – Joseph

+0

@Joseph是的,的確如此:'.toString()'將對象的字符串值返回給元素內容。 – VisioN