2014-10-11 77 views
0

所以,我有一些麻煩找到解決這個問題的方法。我知道這看起來很愚蠢,但我真的很困擾這一點。多次致電javascript功能

我有類似:

<div class="tdate"> 
    Sat Oct 11 01:11:01 +0000 2014 
</div> 
<div class="tdate"> 
    Sat Oct 11 01:10:44 +0000 2014 
</div> 
<div class="tdate"> 
    Sat Oct 11 00:51:03 +0000 2014 
</div> 

而這個javascript函數:

function parseTwitterDate(tdate) { 
    var system_date = new Date(Date.parse(tdate)); 
    var user_date = new Date(); 
    if (K.ie) { 
     system_date = Date.parse(tdate.replace(/(\+)/, ' UTC$1')) 
    } 
    var diff = Math.floor((user_date - system_date)/1000); 
    if (diff <= 1) {return "just now";} 
    if (diff < 20) {return diff + " seconds ago";} 
    if (diff < 40) {return "half a minute ago";} 
    if (diff < 60) {return "less than a minute ago";} 
    if (diff <= 90) {return "one minute ago";} 
    if (diff <= 3540) {return Math.round(diff/60) + " minutes ago";} 
    if (diff <= 5400) {return "1 hour ago";} 
    if (diff <= 86400) {return Math.round(diff/3600) + " hours ago";} 
    if (diff <= 129600) {return "1 day ago";} 
    if (diff < 604800) {return Math.round(diff/86400) + " days ago";} 
    if (diff <= 777600) {return "1 week ago";} 
    return "on " + system_date; 
} 
var K = function() { 
    var a = navigator.userAgent; 
    return { 
     ie: a.match(/MSIE\s([^;]*)/) 
    } 
}(); 

我試圖做的是改變所有的.tdate爲新的格式(這是什麼我的JavaScript)。但我不知道如何調用這個函數來改變所有不同的.tdate。 如果我調用parseTwitterDate(「Sat Oct 11 00:51:03 +0000 2014」),它將工作,但只有一次。

基本上,我希望看到我的網頁上的所有日期格式爲:「Sat Oct 11 01:11:01 +0000 2014」更改爲:「47分鐘前」(或任何輸出)。但我不知道如何調用函數parseTwitterDate(tdate)。

對不起,我真的很糟糕的解釋。如果我沒有說清楚,請告訴我。

非常感謝任何能夠幫助我的人。

非常感謝! :)

+0

你爲什麼不使用的ID? – Meer 2014-10-11 02:11:01

+0

@Meer因爲我有更多的同名DIV,並且只能使用一次相同的ID。但你爲什麼這樣問呢? – JimyPP 2014-10-11 02:14:14

+0

難道你不知道如何編寫'for'循環嗎? – Barmar 2014-10-11 02:16:07

回答

1

由於您使用JQuery(或至少使用JQuery的標籤),你可以做到這一點

$(function() { 
 
    $('.tdate').each(function (index, value) { 
 
     $(value).html(parseTwitterDate(($(value).html()))) 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="tdate"> 
 
    Sat Oct 11 01:11:01 +0000 2014 
 
</div> 
 
<div class="tdate"> 
 
    Sat Oct 11 01:10:44 +0000 2014 
 
</div> 
 
<div class="tdate"> 
 
    Sat Oct 11 00:51:03 +0000 2014 
 
</div>

+1

@JimyPP如果你只是計劃包括jQuery做一個簡單的循環,我強烈建議不要使用這個。 – theliberalsurfer 2014-10-11 02:20:50

+0

同意,因此,自[OP]已經使用Jquery'的合格評論。 – ochi 2014-10-11 02:22:19

+0

我實際上已經在使用jQuery。這種方式很好。 :)謝謝@blurfus – JimyPP 2014-10-11 02:27:21

0

Wadup!將其添加到您的JavaScript文件中。

... 

[].forEach.call(document.getElementsByClassName("tdate"), function(tdate) { 
    tdate.innerHTML = parseTwitterDate(tdate.innerHTML); 
}); 
+0

我剛剛嘗試過,但似乎沒有工作。沒有改變。但下面的解決方案工作得很好。 – JimyPP 2014-10-11 02:23:17

+0

我也沒有看到。無論如何,謝謝:) – JimyPP 2014-10-11 02:34:03

+0

它確實現在工作正常。我想我會用這個來代替jQuery,它會更快。感謝您的幫助。 @AndrewM – JimyPP 2014-10-11 02:40:23

0
$('.tdate').each(function() { 
    $(this).text(parseTwitterDate($(this).text())); 
});