【发布时间】:2021-11-14 04:05:40
【问题描述】:
我编写了以下代码,它应该替换 for 循环内评估为 0 或 1 的值。但它只会将表中的每隔一个元素更改为对应的开关元素。我在这里做错了什么?我用$("td[headers='blub']").eq(i).text("false") \.text("true") 尝试了代码,它正确地改变了每个值......所以它与 appendchild 有关系......我也尝试在每次迭代后删除孩子但不能正常工作
var length = $("td[headers='blub']").text().length;
for (var i = 0; i <= length; i++) {
if ($("td[headers='blub']").eq(i).text() == 1) {
let la = document.createElement("LABEL");
la.className = "switch";
let x = document.createElement("INPUT");
x.setAttribute("type", "checkbox");
let sp = document.createElement("SPAN");
sp.className = "slider round";
x.checked = true;
la.appendChild(x);
la.appendChild(sp);
$("td[headers='blub']").eq(i).replaceWith(la);
} else {
let la = document.createElement("LABEL");
la.className = "switch";
let x = document.createElement("INPUT");
x.setAttribute("type", "checkbox");
let sp = document.createElement("SPAN");
sp.className = "slider round";
x.checked = false;
la.appendChild(x);
la.appendChild(sp);
$("td[headers='blub']").eq(i).replaceWith(la);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
【问题讨论】:
-
text().length获取$("td[headers='blub']")的字符串值中的代码点数,而$("td[headers='blub']").eq(i)获取与"td[headers='blub']"匹配的ith 元素。两种截然不同的东西。 -
是的,我使用这个语句是因为
$("td[headers='blub']").text().length给了我行数,$("td[headers='blub']").eq(i)我正在遍历每一行 @HereticMonkey -
为什么使用 DOM 方法 和 jQuery?选择一个并坚持下去。
-
jQuery 将你从
TypeError中拯救出来,因为i在最后一轮将“越界” -
不,我告诉你
$("td[headers='blub']").text().length让你得到这些单元格中文本的长度,而不是行数。如果您想要table元素的行数,请搜索tr(表格行)元素。
标签: javascript jquery for-loop dom appendchild