gpt4 book ai didi

javascript - 为元素内的复选框创建标签

转载 作者:行者123 更新时间:2023-11-30 08:57:07 27 4
gpt4 key购买 nike

我尝试动态创建线条,问题是当我使用 javascript 动态添加带有标签的复选框时不起作用。然而,我使用 Html 创建的默认情况下工作正常。

事实上,我想要我添加的图像 (on.png/off.png) 替换复选框。当我仅使用 html(复选框 + 标签)执行此操作时,代码有效,但现在我只想使用 Javascript 创建元素,我可以选择标签,但当我单击它时它不起作用。

这是我的全部代码:

主.html

 <HTML>
<HEAD>
<TITLE> </TITLE>
<link rel="stylesheet" type="text/css" href="style.css" />
<SCRIPT language="javascript">
function addRow(tableID) {

var table = document.getElementById(tableID);

var rowCount = table.rows.length;
var row = table.insertRow(rowCount);

var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.type = "checkbox";
element1.id = "id2" ;
cell1.appendChild(element1);

// Create label
var label = document.createElement("label");
label.for = "id2" ;
cell1.appendChild(label);

var cell2 = row.insertCell(1);
cell2.innerHTML = rowCount + 1;

var cell3 = row.insertCell(2);
var element2 = document.createElement("input");
element2.type = "text";
cell3.appendChild(element2);


}

function deleteRow(tableID) {
try {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;

for(var i=0; i<rowCount; i++) {
var row = table.rows[i];
var chkbox = row.cells[0].childNodes[0];
if(null != chkbox && true == chkbox.checked) {
table.deleteRow(i);
rowCount--;
i--;
}

}
}catch(e) {
alert(e);
}
}

</SCRIPT>
</HEAD>
<BODY>
<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />

<INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />

<TABLE id="dataTable" width="350px" border="1">
<TR>
<TD><INPUT type="checkbox" name="chk" id="id1" /> <label for="id1" > </label> </TD>
<TD> 1 </TD>
<TD> <INPUT type="text" /> </TD>
</TR>
</TABLE>
</BODY>
</HTML>

样式.css

 input[type=checkbox] {
display:none;
}

input[type=checkbox] + label
{
background: url(images/off.png) no-repeat;
height: 64px;
width: 64px;
display:inline-block;
padding: 0 0 0 0px;
}

input[type=checkbox]:checked + label
{
background: url(images/on.png) no-repeat;
height: 64px;
width: 64px;
display:inline-block;
padding: 0 0 0 0px;
}

请帮帮我

最佳答案

改变这个

label.for =  "id2" ;

对此

label.htmlFor =  "id2" ;

由于某些 JavaScript 实现不允许关键字/保留字作为对象属性,因此必须对 for 属性进行变通,因此他们选择了 htmlFor

.class 也有类似的情况,这就是他们使用 .className 的原因。

关于javascript - 为元素内的复选框创建标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12585496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com