【发布时间】:2017-05-30 13:02:04
【问题描述】:
我今天早上一直在创建一个网络应用程序,该应用程序从 JSON 文件中获取信息 - 在这种情况下,来自@POTUS 帐户的推文信息,因为白宫刚刚公开了大量信息 - 并将其呈现屏幕上。
具体来说,我一直致力于获取@POTUS 推文信息的 JSON 文件,并显示推文的文本和日期。日期取自时间戳,我使用了一些 JS 将其转换为吸引我的格式。
我的问题是:日期在 Chrome 中正确显示(我一直在测试),但是在 Safari、Firefox 或移动设备中查看时,日期返回“未定义的 NaN,NaN”,其中月份是返回“未定义”,日和年都返回“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 请求的链接吗?github.com/thejessicafelts/POTUS-Tweets/assets/js/potus.json 我需要它来在两个浏览器上调试此代码(如果是,那么我会收到 {error: not found})
-
没关系,我得到了链接。
标签: javascript json date undefined nan