鍍金池/ 問答/HTML/ js刪除選中input元素,從前往后遍歷數(shù)組和從后往前遍歷數(shù)組,為什么結(jié)果不一樣

js刪除選中input元素,從前往后遍歷數(shù)組和從后往前遍歷數(shù)組,為什么結(jié)果不一樣

js初學(xué)者,想實(shí)現(xiàn)一個效果

選中一堆input選擇框,誰被選中了,點(diǎn)擊刪除按鈕,就刪除被選中的那個input
有兩個問題

1、為什么使用foreach去打印每個input的checked是否為true時會報錯?for卻可以?報錯內(nèi)容(Uncaught TypeError: items.forEach is not a function)

2、for循環(huán)那里,上面的是從后往前遍歷,下面的是從前往后遍歷,為什么使用從前往后遍歷的方式時,選擇多個input,但是只能刪除第一個被選中的,但是使用從后往前遍歷的方式時,選擇了哪幾個,哪幾個就都被刪除了呢?

不太理解這個區(qū)別在那兒,麻煩大佬說一下,我是缺少了哪部分的知識點(diǎn),好去看看~~~~~

代碼內(nèi)容

<!DOCTYPE html>
<html lang="en">
<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>
回答
編輯回答
影魅

第一問:items不是數(shù)組,是類數(shù)組,沒有forEach方法
第二問:在移除其中一項(xiàng)后,items長度會改變

2017年8月15日 06:20