如何选择数组中的几个元素?

时间:2013-09-10 22:12:02

标签: javascript jquery css arrays

如何隐藏第三段到最后一段? 到目前为止,我设法隐藏了第一个:

<p>A</p>
<p>B</p>
<p>C</p>
<p>D</p>
<p>E</p>

<script>
document.getElementsByTagName("p")[2].style.display="none";
</script>

2 个答案:

答案 0 :(得分:3)

用jQuery标记:

$('p:gt(1)').hide();
  

:gt =选择匹配集中索引大于索引的所有元素(基于零)

答案 1 :(得分:1)

我的第一个想法是直接使用CSS:

p:nth-child(n + 3) {
    display: none;
}

JS Fiddle demo

或使用纯JavaScript:

var pElems = document.getElementsByTagName('p');

for (var i = 2, len = pElems.length; i < len; i++) {
    pElems[i].style.display = 'none';
}

JS Fiddle demo

当然,只是因为它是可能的(是的,你可以这样做,但这并不意味着你应该),我们也可以扩展{{ 1}}原型,并使用Arrayslice

call

JS Fiddle demo


编辑以回答问题,留在评论(下方),由OP:

  

什么是最短的[JavaScript]才能隐藏最后一个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');

我不经常参加'最短'的比赛(代码高尔夫,尽管技术往往令人印象深刻);但是最简单的方法在评论中写成:

<p>

我最初建议使用var pArray = document.getElementsByTagName("p"); pArray[pArray.length-1].style.display="none"; (忘记pop()没有NodeList方法)因此,进一步推广上述原型扩展方法(并避免重新创建{ {1}},主要是因为pop()似乎在以后的情况下更有用:

pop()

JS Fiddle demo

参考文献: