NodeList и Array
я что то не так делаю или с NodeList так не прокатит ? или работает только slice с NodeList ?
<body> <p></p> <p></p> <p></p> <p></p> <p></p> </body> <script> var e = document.getElementsByTagName('p'); console.log(e.length); Array.prototype.shift.call(e) console.log(e.length); </script> |
caetus,
А что вы хотите сделать? Удалить элемент или получить массив со всеми елементами кроме первого? <body> <p></p> <p></p> <p></p> <p></p> <p></p> </body> <script> var e = [].slice.call(document.getElementsByTagName('p')); alert(e.length); e.shift(); alert(e.length); </script> |
<html> <head> </head> <body> <p></p> <p></p> <p></p> <p></p> <p></p> <script> collection =document.getElementsByTagName('p') e=[].map.call(collection, function(x){return x}) e.shift() alert([collection.length, e.length]) </script> </body> </html> |
Мораль сей басни такова: к HMLCollection невозможно применить деструктивную операцию as is.
|
:)
<body> <p></p> <p></p> <p></p> <p></p> <p></p> <script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.32.0/es6-shim.js"></script> </body> <script> var e = Array.from(document.getElementsByTagName('p')); alert(e.length); e.shift(); alert(e.length); </script> |
Endy,
Я вот реально не понимаю, какой смысл в привязывании функций к именам функций (типо -- классам). Если бы вот так было <html> <head> </head> <body> <p>foo</p> <p>foo</p> <p>foo</p> <p>foo</p> <script> collection=document.getElementsByTagName("p") HTMLCollection.prototype.toArray=function(){return [].map.call(this, function(x){return x})} alert(collection.toArray().map(function(x){return x.innerHTML})) </script> </body> </html> , это еще имело бы какой-никакой смысл. Эти идиоты вообще уже там охренели. Я уже не говорю, что сахар на кажды пук вообще не нужен. |
всем спасибо , разобрался )
|
Часовой пояс GMT +3, время: 14:53. |