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

fullCalendar无法渲染变量数组中事件的原因及解决方法

问题分析与解决

兄弟,你遇到的核心问题是:你拼出来的events变量是个字符串,而日历组件需要的是真正的JavaScript对象数组!

为什么会出现这种差异?

你看代码里,你是通过字符串拼接的方式生成events的:

events1.push("{"+table_row_data+"}");
var events = "["+events1+"]"

这么搞出来的events是一串长得像对象数组的文本,但它本质是string类型。而日历组件期望接收的是由真实JS对象组成的数组——也就是你alert出来之后手动粘贴的那种格式,那是真正的对象结构,不是字符串。

alert的时候会把对象自动转成字符串显示,所以你看着内容一模一样,但底层类型完全不同,组件自然识别不了字符串版的“假数组”。

怎么让变量数据正常渲染?

别用字符串拼接来造对象!直接创建JavaScript对象,然后推到数组里就行。修改你的代码如下:

$(document).ready(function() {
  var events = [];
  $('#caltable tbody>tr').each(function () {
    var table_row_data = [];
    $('td', this).each(function () {
      table_row_data.push($(this).text());
    });
    if (table_row_data.length > 0) { 
      // 直接创建对象,而非拼接字符串
      events.push({
        title: table_row_data[0], // 注意:要确保table_row_data的顺序对应title、start、end
        start: table_row_data[1],
        end: table_row_data[2]
      });
    }
  });
  // 现在events是真正的对象数组,可直接传给日历组件
  console.log(events); // 用console.log查看更准确,能看到真实的变量类型与结构
});

额外提醒

一定要确认table_row_data里的内容顺序正好对应title、start、end,如果表格列顺序不一样,要调整对应的数组索引位置。另外,用console.log()调试变量比alert()更靠谱,能直观看到变量的真实类型和结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:39:13