Maison > Questions et réponses > le corps du texte
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 ?
扔个三星炸死你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...
代言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>
大家讲道理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'appelerArray.prototype.slice.call(arraylike);
欧阳克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.