提问人:Priyansh Yadav 提问时间:3/7/2023 更新时间:3/7/2023 访问量:142
CSS nth-child 在类更改后不刷新
CSS nth-child not refreshing after class change
问:
我有一个带有交替背景颜色行的表格。我使用一个非常简单的 javascript 进行表格过滤。我正在使用 tailwind css。
现在,当我使用 javascript 更改类时,它会按预期更新行的可见性,但不会更新行的背景颜色。
document.getElementById("table-search").addEventListener('input', updatetable, false);
var table = document.getElementById("data-table-body");
var select = document.getElementById("tablefilter");
function updatetable()
{
var search = '';
search = document.getElementById("table-search").value;
search = search.toLowerCase();
console.log(search + "\n" + select.value);
var rows = table.getElementsByTagName("tr");
var row;
var txtvalue = '';
for (var i in rows)
{
row = rows[i];
if (select.value == 'name') {
txtvalue = row.getElementsByTagName("th")[0].textContent || row.getElementsByTagName("th")[0].innerText;
console.log(txtvalue);
if (txtvalue.toLowerCase().includes(search)) {
if (row.classList.contains("table-row-hide")) {
row.classList.remove("table-row-hide");
row.classList.add("table-row-show");
}
}
else
{
if (row.classList.contains("table-row-show")) {
row.classList.remove("table-row-show");
row.classList.add("table-row-hide");
}
}
}
}
}
.table-row-show:nth-child(odd)
{
@apply bg-white dark:bg-gray-900;
}
.table-row-show:nth-child(even)
{
@apply bg-gray-50 dark:bg-gray-800;
}
.table-row-hide
{
display: none;
}
答:
1赞
Quentin
3/7/2023
#1
设置元素以阻止其呈现。它不会将其从 DOM 中删除。display: none
包含三行的表体包含三行。如果第二行是,则第三行仍然是第三行。display: none
您不能用于根据可见的其他元素来选择元素。您需要使用一些其他方法(例如应用于每个可见行的类名)。nth-child
评论
0赞
Priyansh Yadav
3/7/2023
好的,所以我认为如果我将第 n 个子项应用于一个类,它会根据该类找到第 n 个子项,但我现在知道它基于标签工作。因此,我将基于第 n 个子项进行初始渲染,并通过添加所需类的 JavaScript 进行后续更改。
评论