Javascript已创建复选框未正确关闭标记
如果我创建这样一个复选框,并将其添加到我的表[TD]标记中:Javascript已创建复选框未正确关闭标记,javascript,Javascript,如果我创建这样一个复选框,并将其添加到我的表[TD]标记中: var chkBx = document.createElement('input'); chkBx.type = 'checkbox'; td.appendChild(chkBx); 它将创造 <tr> <td> <input type="checkbox" value="Current Issue"> </td> </tr> 此输
var chkBx = document.createElement('input');
chkBx.type = 'checkbox';
td.appendChild(chkBx);
它将创造
<tr>
<td>
<input type="checkbox" value="Current Issue">
</td>
</tr>
此输入标记尚未正确关闭。这在我的代码的其他地方造成了问题(例如,悬停不起作用)
我的Javascript中是否需要执行某些操作才能正确关闭此功能?这取决于您使用的DOCTYPE。XHTML需要结束标记,HTML不需要。我认为浏览器会根据DOCTYPE自动决定动态创建的元素是否需要关闭标记
JSFIDLE上的解析器似乎也有问题。虽然标记在W3C验证器上得到了正确的验证,但是如果没有结束标记,它将无法工作。您的CSS选择器没有选择任何内容
.Table .Popup tr:hover {
background-color:red;
}
应该是:
.Popup tr:hover {
background-color:red;
}
(见:)
及
应该是
table tr.PopupRow:hover {
background-color:red;
}
或
(见:)
请注意,它们都将选择相同的元素,因此具有更多元素的选择器(第二个)将是实际使用的选择器
您的第一个选择器,.Table.Popup tr:hover
将匹配当前悬停在上的tr
元素和元素,这些元素是具有Popup
类的任何元素的后代,而这些元素又是具有Table
类的任何元素的后代
您的第二个选择器,.Table.Popup.popuruw:hover
将匹配当前悬停在上的popuruw
类的任何元素,以及Popup
类的任何元素的后代
小提琴中的标记没有反映该结构,因此选择器没有匹配任何内容(这就是为什么没有反映您的样式)。您是如何获得该HTML的?您正在创建的DOM元素没有需要“关闭”的“标记”。这会导致什么问题?是什么解析这个HTML标记的?但是输入字段不应该用反斜杠结束,以使其格式正确吗?如果我在JSFIDLE it COMPLISE中看到这一点,如果我在我的表行上放置了一个tr:hover样式,它将不起作用。根据其他来源,这是因为TD标签需要正确完成。染料,这些标签是红色的。这是因为jsFiddle中的语法highlighter要求标记(标记)使用格式良好的XHTML。元素是通过JavaScript创建的,不受良好格式的约束。浏览器不会创建无效元素。
table tr.PopupRow:hover {
background-color:red;
}
table .PopupRow:hover {
background-color:red;
}