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

为何Establishment对象含classes数组属性,控制台仍报classes未定义?

解决classes未定义错误,实现班级关联机构的CRUD操作

你的代码出现classes未定义报错,且无法正确将班级存入对应机构的classes数组,核心问题是事件嵌套绑定导致作用域混乱、修改班级时错误引用未定义的全局classes变量,以下是具体修复方案:

核心修复点

  • 不要将#saveClasseBtn的点击事件嵌套在#saveEstablishmentBtn的事件内,避免重复绑定和作用域丢失
  • 在打开班级模态框时,记录当前要操作的机构索引,确保班级能关联到正确的机构
  • 修改班级时,操作对应机构的classes数组,而非未定义的全局classes变量

修复后的完整代码

// 全局存储当前操作的机构索引(也可用模态框的data属性存储)
let currentEstablishmentIndex = -1;

// 保存机构事件
$('#saveEstablishmentBtn').click(function() {
  let establishment = {
    name: $('#establishmentName').val(),
    neighborhood: $('#establishmentNeighborhood').val(),
    date: $('#establishmentDate').val(),
    classes: []
  };

  if ($(this).text() === 'Enregistrer') {
    addEstablishment(establishment);
  } else {
    var index = $(this).data('index');
    establishments[index] = establishment;
  }

  updateTable();
  $('#establishmentModal').modal('hide');
  console.log(establishment);
  console.log(establishments);
});

// 打开班级模态框时,记录当前机构索引(需在按钮上设置data-establishment-index属性)
$('#addClasseBtn').click(function() {
  currentEstablishmentIndex = $(this).data('establishment-index');
  $('#classeModal').modal('show');
});

// 保存班级事件(独立绑定,不嵌套)
$('#saveClasseBtn').click(function() {
  var classe = {
    nameClasse: $('#classeName').val(),
    filiere: $('#classeFiliere').val(),
    profTitulaire: $('#classeProfTitulaire').val()
  };

  // 校验当前机构是否存在
  if (currentEstablishmentIndex === -1 || !establishments[currentEstablishmentIndex]) {
    alert('请先选择要关联的机构');
    return;
  }

  let targetEstablishment = establishments[currentEstablishmentIndex];
  // 兼容机构未初始化classes数组的情况
  if (!targetEstablishment.classes) {
    targetEstablishment.classes = [];
  }

  if ($(this).text() === 'Enregistrer') {
    targetEstablishment.classes.push(classe);
  } else {
    // 修改班级时,获取预先存储的班级索引
    var classeIndex = $(this).data('classe-index');
    targetEstablishment.classes[classeIndex] = classe;
  }

  updateClasseTable();
  $('#classeModal').modal('hide');
  console.log(classe);
  console.log(targetEstablishment.classes);
});

额外说明

  • 需在打开班级模态框的按钮上添加data-establishment-index属性,传递当前要关联的机构索引
  • 如果是修改班级,需在打开修改班级模态框时,记录当前班级的索引并设置到#saveClasseBtn的data-classe-index属性上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:24:54