【问题标题】:Uncaught TypeError: Cannot read properties of undefined (reading 'type')未捕获的类型错误:无法读取未定义的属性(读取“类型”)
【发布时间】:2021-12-22 12:16:24
【问题描述】:

我有一个包含两列的表:值和复选框。我想用选中的复选框识别最小值。我从this question 调整了设置,但改变了我识别复选框的方式 document.getElementsByTagName('input')querySelectorAll(".myCheckbox")。当我添加了一个额外的输入字段时,最初的方式就成了一个问题(这就是我在下面包含它的原因)

但是,函数抛出Uncaught TypeError: Cannot read properties of undefined (reading 'type')

怎么了?

function smallestWeight() {
  let values = [];
  const ele = document.querySelectorAll(".myCheckbox");
  let table = document.getElementById("myTable");
  let trs = table.getElementsByTagName("tr");
  for (i = 0, len = trs.length; i < len; i++) {
    if (ele[i].type == 'checkbox' && ele[i].checked == true) {
      values.push(parseFloat(trs[i].cells[0].innerHTML));
    }
  }
}


const btn = document.getElementById("click");
btn.addEventListener("click", function() {
  smallestWeight();
})
<table id="myTable">
  <thead>
    <tr>
      <th>value</th>
      <th>include</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1.1</td>
      <td><input type="checkbox" class="myCheckbox" id="include" value="include" checked></td>
    </tr>
    <tr>
      <td>2.2</td>
      <td><input type="checkbox" class="myCheckbox" id="include" value="include" checked></td>
    </tr>
    <tr>
      <td>3.3</td>
      <td><input type="checkbox" class="myCheckbox" id="include" value="include" checked></td>
    </tr>
    <tr>
      <td>4.4</td>
      <td><input type="checkbox" class="myCheckbox" id="include" value="include" checked></td>
    </tr>
  </tbody>
</table>

<button id="click">Click</button><br>
<input type="number">

【问题讨论】:

  • 如果你给复选框一个值,这会容易得多。
  • 您最初的回答有效,谢谢。但是,“给复选框一个值”是什么意思?每个复选框都有value="include"
  • like value="1.1" 而不是在文本中查找它......对于所有带有value="include" 的复选框来说,这似乎是一种浪费,因为它真的什么也没做。
  • ID 也是单数。您不应该有多个具有相同 id 的元素。
  • Roger that,同意删除 valueid。我在文本中查找它,因为我总共有三列不同的数字,所以我不能只为复选框分配一个值

标签: javascript html


【解决方案1】:

您的代码会查看表中的所有行。您没有考虑到表格的第一行是 thead。所以你的表格行比复选框大一。

const trs = table.querySelectorAll("tbody tr");

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 2021-11-24
    • 2021-10-31
    • 2021-11-07
    • 2022-01-17
    • 2023-03-13
    • 2022-01-01
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多