Maison  >  Questions et réponses  >  le corps du texte

javascript - La méthode Shift() de JS n'est pas valide?

Comme mentionné, le code est le suivant :

<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>

Les objets de type tableau ne peuvent pas appeler l'API de la méthode shift ?

滿天的星座滿天的星座2662 Il y a quelques jours1054

répondre à tous(4)je répondrai

  • 扔个三星炸死你

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

    Le tableau de classes n'est pas un tableau et il n'y a pas d'API associée qui hérite du tableau
    Vous pouvez utiliser call ou apply pour le lier,
    Par exemple

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

    ps : shift implique également d'opérer le contenu du tableau. Je viens de l'essayer et j'ai forcé l'utilisation de call pour décaler l'objet tableau. Il signalera que la longueur de l'objet associé ne peut pas être modifiée. Si cela implique également un traitement DOM, il est recommandé d'utiliser les opérations DOM associées, par exemple, removeChild ne sera pas développé. Des informations pertinentes sur les objets de tableau DOM peuvent être trouvées dans mdn, par exemple : https://developer.mozilla.org...

    répondre
    0
  • 代言

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

    Shift modifiera le tableau d'origine, entraînant la modification de la propriété length, mais length est en lecture seule. Il peut être utilisé des manières suivantes.

    <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>

    répondre
    0
  • 大家讲道理

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

    Bien sûr, shift est une méthode de tableau. Vous pouvez d'abord convertir le tableau de classe en tableau, puis l'appeler
    Array.prototype.slice.call(arraylike);

    .

    répondre
    0
  • 欧阳克

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

    console.log(a)
    Vous pouvez voir : __proto__:HTMLCollection Il n'y a pas de méthode shift dans HTMLCollection.

    répondre
    0
  • Annulerrépondre