Я сегодня утром работаю над созданием веб-приложения, которое берет информацию из файла JSON - в этом случае читай информацию из учетной записи @POTUS, так как Белый дом просто сделал массу информации общедоступной - и представляет ее на экран.Дата возвращения как «Неопределенный» и «NaN» в некоторых браузерах?
В частности, я работал над взятием JSON-файла информации о твиттере @POTUS и отображением текста твита и даты. Дата взята из метки времени, и я использовал немного JS, чтобы перевести ее в формат, который мне нравится.
Моя проблема заключается в следующем: дата отображается правильно в Chrome (где я тестировал), но при просмотре в Safari, Firefox или мобильном устройстве дата возвращает «undefined NaN, NaN», где месяц возвращается «undefined», а день и год возвращаются «NaN». Просматривая мой код, я не могу найти причину, почему это произойдет.
Вот мой HTML файл в полном комплекте:
<!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>
Вот мой файл JS в полном комплекте:
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);
};
Для справки, проект жив здесь: http://thejessicafelts.github.io/projects/POTUS-Tweets/
И код можно найти здесь: https://github.com/thejessicafelts/POTUS-Tweets
Любое понимание того, почему это не работает, было бы чрезвычайно оценено. Я пытаюсь устранить это все утро, и я не вижу ничего, что могло бы вызвать возврат «неопределенного NaN, NaN».
Заранее спасибо
это ссылка вы делаете запрос GET по протоколу HTTPS: // GitHub. com/thejessicafelts/POTUS-Tweets/assets/js/potus.json Мне нужно отлаживать этот код в обоих браузерах (если да, то я получаю {ошибка: не найден}) –
Nevermind, я получил ссылку. –
Возможно, дубликат [* Почему Date.parse дает неверные результаты? *] (Http://stackoverflow.com/questions/2587345/why-does-date-parse-give-incorrect-results). – RobG