You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

监听timechange/timechanged事件时出现Invalid start "NaN"错误

解决Vis.js Timeline添加自定义时间栏时的"Invalid start 'NaN'"错误

我来帮你搞定这个头疼的NaN错误,看起来是你的Timeline配置和自定义时间栏的写法出了两处关键问题,咱们一步步理顺:

1. 先修复Timeline配置里的语法和逻辑错误

你原来的setOptions代码里,start参数的写法混乱,还把moment配置嵌套错了位置,这直接导致Timeline无法正确解析起始时间,抛出NaN错误。咱们把它拆清楚:

错误的原代码片段:

timeline.setOptions({ 
  height: '100%', 
  editable: false, 
  moveable: true, 
  zoomable: true, 
  configure: true, 
  showCurrentTime: false, 
  start: vis.moment.utc().format('YYYY-MM-DDT00:00:00.000Z', 
  moment: function(date) { return vis.moment(date).utc(); } 
}); 

修正后的配置:

timeline.setOptions({ 
  height: '100%', 
  editable: false, 
  moveable: true, 
  zoomable: true, 
  configure: true, 
  showCurrentTime: false,
  // 单独配置全局使用UTC的moment实例,这是顶级属性,别嵌套在start里
  moment: function(date) {
    return vis.moment(date).utc();
  },
  // 正确设置起始时间:当天UTC的0点,用toISOString生成标准格式
  start: vis.moment.utc().startOf('day').toISOString()
});

2. 确保addCustomTime传入有效的时间值

你的代码里timeline.addCustomTime(vis....)没写完,这里必须传入有效的vis.moment实例、日期对象或者可解析的日期字符串,如果传了无效值,也会触发"Invalid start 'NaN'"错误。比如:

// 添加当前UTC时间作为自定义时间栏
const myCustomTime = vis.moment.utc();
// 第二个参数是自定义时间栏的ID(可选,方便后续修改/移除)
timeline.addCustomTime(myCustomTime, 'my-custom-time-mark');

关键注意点

  • 别把moment配置嵌套在start参数里,它是setOptions的顶级配置项,用来统一Timeline的时间解析规则
  • 所有时间参数要和你配置的UTC规则保持一致,避免时区转换导致的解析错误
  • 一定要确认vis.moment已经正确引入,没有拼写错误(比如写成普通moment而不是vis.moment)

内容的提问来源于stack exchange,提问作者xspydr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:55:23