javascript如何停止循环四小于elems.length?

时间:2017-03-31 12:45:23

标签: javascript loops

这应该很容易,但是如果我有

,我显然很荒谬
var elems = document.getElementsByTagName("details");

function openAll() {
  for (var i = 0; i < elems.length; i++){
    elems[i].setAttribute("open", "true");
  }

但我想在结束前停止4个标签。我该怎么写?以下不起作用或其他各种变化。

var elems = document.getElementsByTagName("details");

function openAll() {
  for (var i = 0; i < elems.length -4; i++){
    elems[i].setAttribute("open", "true");
  }

2 个答案:

答案 0 :(得分:1)

你做得对,但你忘了检查elems.length-4是否大于0.如果不是,你的for循环将永远不会执行。

你可能想要这样的东西:

var l = elems.length;
for (i = 0; i < (l > 4 ? l - 4 : l; i++) {
   elems[i].setAttribute("open", "true");
}

此循环将跳过最后四个元素,但仅限于总共有四个以上的元素。

答案 1 :(得分:0)

这可能会对你有所帮助。请看这个片段

var elems = document.getElementsByTagName("p");

function openAll() {
  for (var i = 0; i < elems.length-4; i++){
    elems[i].setAttribute("class", "open");
  }
  
  }
  openAll();
.open{
  display:bolck
}

.close{
display:none;
}
<p class="close">hello</p>
<p class="close">hello</p>
<p class="close">hello</p>
<p class="close">hello</p>
<p class="close">hello</p>
<p class="close">hello</p>
<p class="close">hello</p>
<p class="close">hello</p>