CSS nth-child 在类更改后不刷新

CSS nth-child not refreshing after class change

提问人:Priyansh Yadav 提问时间:3/7/2023 更新时间:3/7/2023 访问量:142

问:

我有一个带有交替背景颜色行的表格。我使用一个非常简单的 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;
}

JavaScript HTML CSS

评论


答:

1赞 Quentin 3/7/2023 #1

设置元素以阻止其呈现。它不会将其从 DOM 中删除。display: none

包含三行的表体包含三行。如果第二行是,则第三行仍然是第三行。display: none

您不能用于根据可见的其他元素来选择元素。您需要使用一些其他方法(例如应用于每个可见行的类名)。nth-child

评论

0赞 Priyansh Yadav 3/7/2023
好的,所以我认为如果我将第 n 个子项应用于一个类,它会根据该类找到第 n 个子项,但我现在知道它基于标签工作。因此,我将基于第 n 个子项进行初始渲染,并通过添加所需类的 JavaScript 进行后续更改。