为什么更改对象列表中的类名会将iten从列表中删除

why changing classname in a list of object removes itens from the list

本文关键字:列表 iten 删除 对象 为什么      更新时间:2024-07-04

您将看到只有2 td对象丢失了clasNname。为什么变量"many"在每个className="处都会丢失一个itens?有人能帮我吗?非常感谢。

    <!DOCTYPE html>
    <html>
    <head>
        <title>Why?</title>
        <style>
            .f{background:lightblue;}
            .g{background:lightcoral;}
        </style>
    </head>
    <body>
        <table id="t" style="border:1px solid black">
            <tr>
                <td class="f">1</td>
                <td class="f">2</td>
                <td class="f">3</td>
                <td class="f">4</td>
            </tr>
        </table>
        <script>
            many = document.getElementById("t").getElementsByClassName("f");
            document.write("initial length of many="+many.length+"<br>");
            for (var x = 0; x < many.length; x++) {
                many[x].className='';
                document.write("loop x="+x+" many.length="+many.length+"<br>");
            }
            document.write("final length of many="+many.length+"<br>");
        </script>
    </body>
</html>

getElememtsByClassName()方法返回一个活动的NodeList,因此,如果您删除由不再具有该类名的元素搜索的类名,则会立即从many变量中的NodeList中删除。