我知道通过使用jQuery
,您可以轻松使用:last
选择器来获取最后一个元素。
$(".some-element:last")
虽然不可以使用javascript。
document.querySelectorAll(".some-element:last")
在javascript
中做同样事情的最佳和最短的方法是什么?
修改
我没有带id
属性的包装器元素,这是我无法使用lastChild
的方式。
答案 0 :(得分:10)
<强> E:最后子强>
一个E元素,其父元素的最后一个子元素
console.log(document.querySelectorAll(".some-element:last-child"))
<ul>
<li class="some-element">1</li>
<li class="some-element">2</li>
<li class="some-element">3</li>
</ul>
<强> - 更新 - 强>
如果您有其他不共享相同类名的元素,您可以尝试使用其他方法,例如使用
<强> E:第n-最后的型(n)强>
一个E元素,它的类型的第n个兄弟,从最后一个算起
var lastLiItem = document.querySelectorAll("li:nth-last-of-type(1)");
var lastSomeElement = document.querySelectorAll("li:nth-last-of-type(2)");
console.log("This is the last li item in the list: ", lastLiItem[0]);
console.log("This is the last li item with class .some-element in the list: ", lastSomeElement[0]);
<ul>
<li class="some-element">1</li>
<li class="some-element">2</li>
<li class="some-element">3</li>
<li>4</li>
</ul>
或者只获取.some-element
类的最后一个元素,只需执行
var someElementsItems = document.querySelectorAll(".some-element");
console.log(someElementsItems[someElementsItems.length -1])
答案 1 :(得分:3)
要查找元素的最后一个子元素,可以使用它:
var childrenCount = document.getElementById("myDIV").childNodes.length;
document.getElementById("myDIV").childNodes[childrenCount-1];
答案 2 :(得分:2)
querySelectorAll
返回NodeList
对象,该对象可以转换为Array
。然后pop
返回最后一个元素。
Array.from(document.querySelectorAll('.some-element')).pop();
function addItem(withClass){
document.body.insertAdjacentHTML('beforeend', withClass
? '<div class="some-element">with class</div>'
: '<div>without class</div>'
)
findLastOfClass('.some-element')
}
function findLastOfClass(selector){
var lastOfClass = [...document.querySelectorAll(selector)].pop()
// temporarily highlight last-of-class
if( lastOfClass ){
lastOfClass.classList.add('highlight')
setTimeout(()=> lastOfClass.classList.remove('highlight'), 1000)
}
}
.highlight{ background: lightyellow }
<button onClick="addItem(true)">add item with class</button>
<button onClick="addItem()">add item without class</button>
Array.prototype.pop.call(document.querySelectorAll('.some-element'));
答案 3 :(得分:1)
请按照以下步骤
var elems = document.querySelectorAll(".some-element");
var len = elems.length;
var lastelement = len < 1 ? "" : elems[len-1];
希望它有所帮助。