为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

德玛西亚99 2019-03-13 14:13:37
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>
查看完整描述

1 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

第一问:items不是数组,是类数组,没有forEach方法
第二问:在移除其中一项后,items长度会改变

查看完整回答
反对 回复 2019-04-02
  • 1 回答
  • 0 关注
  • 792 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号