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

Uncaught TypeError读取'type'报错 获取勾选复选框对应最小值失败如何解决

问题原因
  • 你调用table.getElementsByTagName("tr")获取到的行包含了<thead>中的表头行,最终得到的trs长度为5(1行表头+4行数据),但通过.myCheckbox类选择器筛选出来的复选框只有4个,仅对应4行数据。
  • 循环执行到i=4时,ele[4]为undefined,读取undefined的type属性就会抛出你遇到的报错。
  • 补充:你的代码中多个复选框重复使用了相同的id="include",HTML规范中id属性需要全局唯一,建议修改避免后续出现其他定位问题。
修正方案

推荐直接遍历筛选到的复选框,再向上查找对应行的数值,逻辑更稳妥:

function smallestWeight() {
  let values = [];
  const checkboxes = document.querySelectorAll(".myCheckbox");
  // 直接遍历所有匹配的复选框
  checkboxes.forEach(checkbox => {
    if (checkbox.checked) {
      // 找到当前复选框所在的tr行,取第一列的数值
      const currentTr = checkbox.closest('tr');
      values.push(parseFloat(currentTr.cells[0].innerHTML));
    }
  })
  // 求最小值的逻辑
  if (values.length > 0) {
    const minVal = Math.min(...values);
    console.log('最小数值是:', minVal);
  }
}
const btn = document.getElementById("click");
btn.addEventListener("click", function() {
  smallestWeight();
})

如果要保留原有循环逻辑,仅修改获取tr的方式,只拿tbody内的行即可:

// 替换原代码中获取trs的语句
let trs = table.querySelector('tbody').getElementsByTagName("tr");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:36:04