js删除选中input元素,从前往后遍历数组和从后往前遍历数组,为什么结果不一样

js初学者,想实现一个效果


选中一堆input选择框,谁被选中了,点击删除按钮,就删除被选中的那个input

有两个问题


1、为什么使用foreach去打印每个input的checked是否为true时会报错?for却可以?报错内容(Uncaught TypeError: items.forEach is not a function)


2、for循环那里,上面的是从后往前遍历,下面的是从前往后遍历,为什么使用从前往后遍历的方式时,选择多个input,但是只能删除第一个被选中的,但是使用从后往前遍历的方式时,选择了哪几个,哪几个就都被删除了呢?


不太理解这个区别在那儿,麻烦大佬说一下,我是缺少了哪部分的知识点,好去看看~~~~~


代码内容


<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

<div>

    <h1>这是你的邮箱</h1>

    <button onclick="delItem()">删除所有邮件</button>

    <form action="">

    <label for=""><input type="checkbox" class="ip1">足球</label>

    <label for=""><input type="checkbox" class="ip1">篮球</label>

    <label for=""><input type="checkbox" class="ip1">台球</label>

    <label for=""><input type="checkbox" class="ip1">乒乓球</label>

    </form>

</div>

<script>


        var items=document.getElementsByClassName('ip1');

        var form=document.getElementsByTagName('form')[0];

        var labels=document.getElementsByTagName('label');

        function delItem() {

            console.log(items);

            items.forEach(function (item,index) {

                console.log(item[index].checked);

            })


            //从后往前

            for(var i=items.length-1;i>-1;i--){

            //从前往后

            // for(var i=0;i<items.length;i++){

                if(items[i].checked){

                    console.log(labels[i]);

                    console.log(i);

                    form.removeChild(labels[i]);

                }

            }

        }



</script>


</body>

</html>


德玛西亚99
浏览 821回答 1
1回答

翻翻过去那场雪

第一问:items不是数组,是类数组,没有forEach方法第二问:在移除其中一项后,items长度会改变
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript