js獲取當前元素所有子級元素的相關問題


以ul,li為例,獲取ul下所有li標簽

<ul id="nav">
    <li>一號</li>
    <li>二號</li>
    <li>三號</li>
    <li>四號</li>
</ul>

<script>
    let a=document.getElementById('nav').children   //獲取ul下的所有子級
    console.log(a)
</script>

如下圖所示,獲取到的是HTMLCollection格式的,這是偽數組而不是真數組,這種格式不能使用數組的方法(如push、concat等),故需要將其轉換成真數組

HTMLCollection --> Array 三種常用方法

es5方法(低版本瀏覽器使用,ie):var arr = Array.prototype.slice.call(htmlCollection);   //說明,這里 .call() 或 .apply() 或 .bind() 都行

es6方法1:let arr = [...htmlCollection]

es6方法2:let arr = Array.from(htmlCollection)

當然,如果十分不幸的,你需要兼容IE8等舊瀏覽器或更早版本,我們需要使用一個更基本的兼容性函數,如

function toArr(arr){
    for(var i = 0, a = []; i < arr.length; i++)
    a.push(arr[i]);
    return a;
}

轉換成數組之后,即可使用push.concat等方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM