Ich habe heute Morgen an der Erstellung einer Web-App gearbeitet, die Informationen aus einer JSON-Datei übernimmt - in diesem Fall tweeten Sie Informationen aus dem @POTUS-Konto, da das Weiße Haus eine Unmenge an Informationen öffentlich zugänglich gemacht hat - und präsentiert es der Bildschirm.Datum, das in einigen Browsern als "Undefined" und "NaN" zurückgegeben wird?
Insbesondere habe ich daran gearbeitet, die JSON-Datei von @ POTUS Tweet Informationen zu nehmen und den Text des Tweet und das Datum anzuzeigen. Das Datum stammt aus einem Zeitstempel und ich habe ein bisschen JS verwendet, um es in ein für mich ansprechendes Format zu übersetzen.
Mein Problem ist das: Das Datum erscheint korrekt in Chrome (wo ich getestet habe), aber wenn es in Safari, Firefox oder einem mobilen Gerät angezeigt wird, gibt das Datum "undefined NaN, NaN", wo Monat kommt "undefiniert" zurück und Tag und Jahr geben beide "NaN" zurück. Wenn ich meinen Code durchschaue, kann ich keinen Grund finden, warum das passieren würde.
Hier meine HTML-Datei ist in seiner Gesamtheit:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>@POTUS</title>
<link rel="stylesheet" href="assets/css/main.css">
<link href="https://fonts.googleapis.com/css?family=Lato:300,900" rel="stylesheet">
</head>
<body>
<div class="tweet-container">
<header>
<h1 class="title">
<a class="twitter" href="http://www.twitter.com/potus" target="_blank">@POTUS</a> Tweets
</h1>
<p class="description">A complete archieve of tweets from President Barack Obama, presented in reverse chronological order.</p>
</header>
<div id="potus-tweets"></div>
<button id="btn">New Tweet</button>
</div>
<script src="assets/js/tweets.js"></script>
</body>
</html>
Hier meine JS-Datei ist in seiner Gesamtheit:
var tweetCounter = 0;
var tweetsContainer = document.getElementById("potus-tweets");
var btn = document.getElementById("btn");
btn.addEventListener("click", function(){
var request = new XMLHttpRequest();
request.open('GET', 'assets/js/potus.json');
request.onload = function(){
var potusTweets = JSON.parse(request.responseText);
loadTweets(potusTweets);
};
request.send();
});
function loadTweets(data){
var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var date = new Date(data[tweetCounter].timestamp);
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var tweet = "";
for (i = 0; i < 1; i++){
tweet += '<div class="tweet"><p class="copy">' + data[tweetCounter].text + '</p><p class="date">' + monthNames[month] + ' ' + day + ', ' + year + '</p></div>';
tweetCounter++;
};
tweetsContainer.insertAdjacentHTML('beforeend', tweet);
};
Als Referenz ist das Projekt Live hier: http://thejessicafelts.github.io/projects/POTUS-Tweets/
Und der Code kann hier gefunden werden: https://github.com/thejessicafelts/POTUS-Tweets
Einsichten darüber, warum dies nicht funktioniert, wären sehr willkommen. Ich habe den ganzen Morgen versucht, den Fehler zu beheben, und ich kann nichts sehen, was die Rückkehr von "undefiniertem NaN, NaN" verursachen würde.
Vielen Dank im Voraus
ist dies der Link eine GET-Anforderung stellen, auf https: // GitHub. com/thejessicafelts/POTUS-Tweets/assets/js/potus.json Ich brauche es, um diesen Code auf beiden Browsern zu debuggen (wenn ja, dann bekomme ich einen {Fehler: nicht gefunden}) –
Nevermind, ich habe den Link. –
Wahrscheinlich ein Duplikat von [* Warum gibt Date.parse falsche Ergebnisse? *] (Http://stackoverflow.com/questions/2587345/why-does-date-parse-give-incorrect-results). – RobG