Rumah  >  Soal Jawab  >  teks badan

javascript - Kaedah shift() js tidak sah?

Seperti yang dinyatakan, kodnya adalah seperti berikut:

<ul class="demo">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
</ul>
<script>
    var l = document.getElementsByClassName("demo")[0];
    var a = l.children;
    var r=a.shift();
    console.log(r);//报错:a.shift is not a function?
</script>

Objek seperti susunan tidak boleh memanggil kaedah shift api?

滿天的星座滿天的星座2662 hari yang lalu1059

membalas semua(4)saya akan balas

  • 扔个三星炸死你

    扔个三星炸死你2017-07-05 10:47:34

    Tatasusunan kelas bukan tatasusunan, dan tiada API berkaitan yang mewarisi tatasusunan
    Anda boleh menggunakan panggilan atau memohon untuk mengikat ini,
    Sebagai contoh

    var r = [].shift.call(a)

    ps: shift juga melibatkan pengendalian kandungan array Saya baru sahaja mencubanya dan memaksa penggunaan panggilan untuk mengalihkan objek array Ia akan melaporkan bahawa panjang objek yang berkaitan tidak boleh diubah suai. adalah disyorkan untuk menggunakan operasi DOM yang berkaitan Contohnya, removeChild tidak akan dikembangkan. Maklumat berkaitan tentang objek tatasusunan DOM boleh didapati dalam mdn, seperti: https://developer.mozilla.org...

    balas
    0
  • 代言

    代言2017-07-05 10:47:34

    Shift akan mengubah suai tatasusunan asal, menyebabkan sifat panjang berubah, tetapi panjang adalah baca sahaja. Ia boleh digunakan dengan cara berikut.

    <ul class="demo">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
    </body>
    
    <script>
        var l = document.getElementsByClassName("demo")[0];
        var a = l.children;
        var arry = [...a];
        var r=arry.shift();
        console.log(r);
    </script>

    balas
    0
  • 大家讲道理

    大家讲道理2017-07-05 10:47:34

    Sudah tentu, shift ialah kaedah tatasusunan Anda boleh menukar tatasusunan kelas kepada tatasusunan dahulu dan kemudian memanggilnya
    Array.prototype.slice.call(arraylike);

    balas
    0
  • 欧阳克

    欧阳克2017-07-05 10:47:34

    console.log(a)
    Anda boleh lihat: __proto__:HTMLCollection Tiada kaedah anjakan dalam HTMLCollection.

    balas
    0
  • Batalbalas