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, время: 21:54. |