2017-11-14 6 views
-2

Ich studiere gerade jQuery. Was ich jetzt baue heißt "twittler", welches die Bibliotheken jQuery und moment.js benutzt.Wie kann ich einen benutzerfreundlichen Zeitstempel erstellen?

Ich habe den folgenden Code geschrieben, aber die Zeit der Erstellung ist immer "vor ein paar Sekunden". Was ist das Problem?

<script> 
    $(document).ready(() => { 
     let index = 0, lastIndex = streams.home.length; 
     let showTweet =() => { 
     for (; index < lastIndex; index++) { 
      let tweet = streams.home[index]; 
      let $tweet = $(
      `<div class="w3-card-4 w3-section">` + 
      `<footer class="w3-container w3-opacity w3-right-align">` + 
      `<h6 class="time" id="${tweet.created_at.getTime()}"></h6>` + 
      `</footer>` + 
      `</div>` 
     ); 
      $tweet.prependTo($(".main-contents")); 
     } 
     }; 
     let lastIndexUpdate =() => { 
     lastIndex = streams.home.length; 
     }; 
     let timeUpdate =() => { 
     $("h6.time").text(moment($("h6.time").attr("id"), "x").fromNow()); 
     }; 
     showTweet(); 
     setInterval(showTweet, 1000); 
     setInterval(lastIndexUpdate, 1000); 
     setInterval(timeUpdate, 1000); 
    }); 
    </script> 

Antwort

1

$("h6.time").attr("id") wird immer Wert von ersten Anpassungs Wähler erhalten nur.

Sie müssen beispielsweise bestimmte Werte

Sie text(function) verwenden können, die jede Instanz in der Callback-

$("h6.time").text(function(){ 
    return moment(this.id, "x").fromNow(); 
}); 
+0

Ich habe versucht, oben, aber Ausgang ist 'Ungültige date' aussetzen wird. trotzdem danke. –

+0

Ist 'tweet.created_at' ein Datumsobjekt oder immer noch ein String? Was siehst du im Dom, wenn du jede ID inspizierst? – charlietfl

+0

'tweet.created_at' ist ein JavaScript-Datumsobjekt. und 'id =" 1510684802202 "' –

Verwandte Themen