【发布时间】: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,同意删除
value和id。我在文本中查找它,因为我总共有三列不同的数字,所以我不能只为复选框分配一个值
标签: javascript html