我寫了以下代碼,它應該在for-loop中替換一個評估為0或1的值。但它只將表中的每一個元素改為對應的開關元素。我在這里做錯了什么?我試著用$("td[headers='blub']").eq(i).text("false") .text("true")的代碼,它正確地改變了每個值...所以它與appendchild有關系... 我還試著在每次迭代后洗掉子程式,但沒有正常作業
var length = $("td[headers='blub']"/span>). text().length。
for (var i = 0; i <= length; i ) {
if ($("td[headers='blub']"/span>). eq(i).text() == 1) {
let la = document.createElement("LABEL"/span>)。
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']"/span>).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']"/span>).eq(i).replaceWith(la)。
}
}
<script src="https://cdnjs. cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
存在多個問題:
length變數被設定為字串的長度,而不是匹配DOM元素的數量。
for回圈應該去< length,而不是<= lengthtd元素的結果,因此你用$("td[headers='blub']")減少了匹配的數量,使得.eq(i)跳過你期望得到的下一個元素。td元素將導致無效的HTML。你應該保留td元素并改變它們的內容。
以下是我的建議:
$("td[headers='blub']"/span>)。 each(function () {
let checked = $(this).text().trim() == "1";
$(this).text(""/span>).append(
$("<label>").addClass("switch").append(
$("<input>", { type: "checkbox", checked })。)
$("<span>").addClass("滑塊圓形")
)
);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/321653.html
標籤:
下一篇:如何改變設計位置?
