Rumah > Soal Jawab > teks badan
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?
扔个三星炸死你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...
代言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>
大家讲道理2017-07-05 10:47:34
Sudah tentu, shift ialah kaedah tatasusunan Anda boleh menukar tatasusunan kelas kepada tatasusunan dahulu dan kemudian memanggilnyaArray.prototype.slice.call(arraylike);
欧阳克2017-07-05 10:47:34
console.log(a)
Anda boleh lihat: __proto__:HTMLCollection
Tiada kaedah anjakan dalam HTMLCollection.