【发布时间】:2013-10-04 06:30:01
【问题描述】:
我正在使用一个名为 moment.js 的 JS 库来查找和消除在 start_time 和 stop_time 之间存在很大差距的事件。我一直收到这个错误——
TypeError: moment(...) 为空 var stopmoment1 = moment(data.events.event[x].stop_time).format("YYYY");
啊!!!
for (var x = 0; x
var position = new google.maps.LatLng( data.events.event[x]['latitude'], data.events.event[x]['longitude']);// 控制台返回年份
console.log(moment(data.events.event[x].start_time).format("YYYY"));
// 但这里说 moment 返回 null
var startmoment1 = 时刻(data.events.event[x].start_time).format("YYYY"); var startmoment2 = moment(data.events.event[x].start_time).format("MM"); var startmoment3 = moment(data.events.event[x].start_time).format("DD");
var startmoment = moment([startmoment1,startmoment2,startmoment3]);
var stopmoment1 = moment(data.events.event[x].stop_time).format("YYYY"); var stopmoment2 = moment(data.events.event[x].stop_time).format("MM"); var stopmoment3 = moment(data.events.event[x].stop_time).format("DD");
var stopmoment = moment([stopmoment1,stopmoment2,stopmoment3]);
if (startmoment.diff(stopmoment, 'days') > 7) { } else{
if (moment().format("YYYYMMDD") == moment(data.events.event[x].start_time).format("YYYYMMDD")) { marker.push(new google.maps.Marker({ position: position, map: map, icon: image })); marker[x].x = x;//make the marker aware of its own index google.maps.event.addListener(marker[x], 'click', function() { var div = document.createElement('div'); div.setAttribute("id", "tabs-min"); div.innerHTML = content[this.x]; $(div).tabs(); infowindow.setContent(div); infowindow.open(map, this); }); } else { marker.push(new google.maps.Marker({ position: position, map: map, icon: image1 })); marker[x].x = x;//make the marker aware of its own index google.maps.event.addListener(marker[x], 'click', function() { var div = document.createElement('div'); div.setAttribute("id", "tabs-min"); div.innerHTML = content[this.x]; $(div).tabs(); infowindow.setContent(div); infowindow.open(map, this); }); }
【问题讨论】:
-
对不起,我可能误解了,
var stopmoment1 = moment(data.events.event[x].stop_time).format("YYYY");行给你一个错误,它不在循环内设置的事件处理函数中?正如 Kristof 建议的那样,也许 console.log 一些东西。在 Firefox 中,您可以按 control+shift+k,在 Chrome 中,按 F12 打开控制台(IE 有控制台,但在 90% 的情况下会记录 [object Ojbect])然后您可以开始记录一些内容,例如console.log("moment is:", moment)和console.log("stop time is:",data.events.event[x].stop_time) -
我已经更新了我的答案,尝试在全局范围内添加 eventListeners 变量并将其替换为我发布的代码。每次重新声明事件侦听器都会重复您的代码(复制粘贴),而不是最好重新使用现有函数。通过这种方式,您可以限制闭包可用的变量数量。它有一些 console.log 语句,可以给你一个关于发生了什么的提示。
-
为什么会有这个:
for (var x = 0; x < data.page_size; x++) {为什么没有这个:for (var x = 0; x < data.event.length; x++) { -
我想我当时不知道 .length 属性。 page_size 是 json 响应的一部分,相当于长度,所以我选择了那个
标签: javascript arrays for-loop momentjs