javascript - Javascript只改变循环中的每一秒元素
问题描述
我编写了以下代码,它应该替换 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>
解决方案
有多个问题:
- 该
length
变量设置为字符串的长度,而不是匹配的DOM 元素的数量。 - 一个
for
循环应该去< length
,而不是<= length
td
您描述的效果是用其他东西替换元素的结果,因此您$("td[headers='blub']")
通过.eq(i)
跳过您期望获得的下一个元素来减少匹配的数量。- 将元素替换
td
为其他类型的元素会导致 HTML 无效。您应该保留td
元素并更改其内容。 - 您将 jQuery 与非 jQuery 方法混合使用。如果您使用 jQuery,请一路走好。
这是我的建议:
$("td[headers='blub']").each(function () {
let checked = $(this).text().trim() == "1";
$(this).text("").append(
$("<label>").addClass("switch").append(
$("<input>", { type: "checkbox", checked }),
$("<span>").addClass("slider round")
)
);
});
推荐阅读
- c - 如何将 *uint8_t (array) 从外部 c 文件的函数返回到 main.c
- javascript - 当我在 React-Native 中进行 mqtt 连接时,client.connected 返回 false .. 为什么?
- python - 网络爬虫返回多个错误
- apache-nifi - 如何从 CSV 文件中读取
- oracle - 只想为特定模式更改 oracle DB 中的 NLS_DATE_FORMAT
- java - 使用带有 keyStore.load 的 HttpClient 的 java.io.EOFException 发生异常
- amazon-s3 - 来自 s3 存储桶的 m3u8 扩展文件的签名 url
- typescript - 覆盖接口中可选的继承嵌套属性
- c - 我可以使用联合来表达一个结构和多个打包成员吗?
- c# - 使用 IText 7 生成一个包含从 html 转换的多页的 pdf 文档