这应该很容易,但是如果我有
,我显然很荒谬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");
}
答案 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>