[英]Get first and last n items from a nodelist
I have a nodelist我有一个节点列表
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
</ul>
const slides = document.querySelectorAll('ul li');
I want to save copies of first and last 2 li elements to a variable.我想将第一个和最后 2 个 li 元素的副本保存到一个变量中。
const first2 = slides.slice(0, 2),
last2 = slides.slice(-2);
All the answers I've seen suggest creating array from nodelist but I need these elements to remain a nodelist.我看到的所有答案都建议从节点列表创建数组,但我需要这些元素保持节点列表。 How can I do this?
我怎样才能做到这一点?
I want to create clones of these items, add a class to it and add it back to ul.我想创建这些项目的克隆,向其中添加 class 并将其添加回 ul。 So the final html should look like this
所以最终的 html 应该是这样的
<ul>
<li class="copy">One</li>
<li class="copy">Two</li>
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
<li class="copy">Four</li>
<li class="copy">Five</li>
</ul>
Do you mean something like this?你的意思是这样的吗?
const slides = document.querySelectorAll("ul li"); const ul = document.querySelector("ul"); const temp = []; slides.forEach(slide => { const clone = slide.cloneNode(true); clone.classList.add("red"); temp.push(clone); }); temp.slice(0, 2).reverse().forEach(slide => { ul.prepend(slide); }); temp.slice(-2).forEach(slide => { ul.appendChild(slide); });
.red { color:red; }
<ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul>
You can you selector like in CSS.您可以像 CSS 中那样选择器。 In this case
:first-child
and :last-child
在这种情况下
:first-child
和:last-child
const firstElement = document.querySelector('ul li:first-child'); console.log('firstElement', firstElement) const lastElement = document.querySelector('ul li:last-child'); console.log('lastElement', lastElement)
ul li:first-child { color:red; } ul li:last-child { color:green; }
<ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.