如何从第三段隐藏到最后一段?到目前为止,我设法只隐藏了第一个:
<p>A</p>
<p>B</p>
<p>C</p>
<p>D</p>
<p>E</p>
<script>
document.getElementsByTagName("p")[2].style.display="none";
</script>
如何从第三段隐藏到最后一段?到目前为止,我设法只隐藏了第一个:
<p>A</p>
<p>B</p>
<p>C</p>
<p>D</p>
<p>E</p>
<script>
document.getElementsByTagName("p")[2].style.display="none";
</script>
因为它用 jQuery 标记:
$('p:gt(1)').hide();
:gt = 选择匹配集中索引大于索引的所有元素(从零开始)
我的第一个想法是直接使用 CSS:
p:nth-child(n + 3) {
display: none;
}
或者使用纯 JavaScript:
var pElems = document.getElementsByTagName('p');
for (var i = 2, len = pElems.length; i < len; i++) {
pElems[i].style.display = 'none';
}
当然,仅仅因为它是可能的(是的,你可以这样做,但这并不意味着你应该这样做),我们也可以扩展Array
原型,并利用slice
, 和call
:
Array.prototype.css = function (prop,val) {
var self = this;
for (var i = 0, len = self.length; i < len; i++) {
self[i].style[prop] = val;
}
return self;
};
[].slice.call(document.getElementsByTagName('p'), 2).css('display','none');
针对问题进行编辑,由 OP 留在评论(下方)中:
隐藏最后一个的最短 [JavaScript] 是
<p>
什么?
我不经常参加“最短”的比赛(有点代码高尔夫的味道,尽管技术往往令人印象深刻);然而,最简单的方法是在评论中写的:
var pArray = document.getElementsByTagName("p");
pArray[pArray.length-1].style.display="none";
我最初建议使用pop()
(忘记 aNodeList
没有pop()
方法)所以,为了进一步推进上述原型扩展方法(并避免重新创建pop()
,主要是因为slice()
在以后的情况下似乎更有用:
Array.prototype.css = function (prop,val) {
var self = this;
for (var i = 0, len = self.length; i < len; i++) {
self[i].style[prop] = val;
}
return self;
};
NodeList.prototype.slice = function (a,b) {
return [].slice.call(this, a, b);
}
var pArray = document.getElementsByTagName("p");
pArray.slice(-1).css('display','none');
参考: