How can i add class on last div with javascript it length is change dynamic

时间:2016-04-07 10:30:31

标签: javascript

<div id="block-region-side-pre"> 
     <div class="block">a</div>
     <div class="block">b</div>
     <div class="block">c</div>
     <div class="block">d</div>
</div>


 var allElems = document.querySelector("#block-region-side-pre").querySelectorAll(".block");

    for(var i=0; i< allElems.length; i++){
       allElems[i].className+=' lastblock'
    }

How can i find the last div lastblock to it. I am try to do it but it add on all div that classname is block

3 个答案:

答案 0 :(得分:2)

Use last-child selector and querySelector instead of querySelectorAll as you are targeting only one element.

document.querySelector("#block-region-side-pre").querySelector(".block:last-child").className += ' lastblock';
.lastblock {
  color: orange;
}
<div id="block-region-side-pre">
  <div class="block">a</div>
  <div class="block">b</div>
  <div class="block">c</div>
  <div class="block">d</div>
</div>

Edit: If elements are added dynamically and your script is being applied before elements are appended, Use css :last-child property,

The :last-child CSS pseudo-class represents any element that is the last child element of its parent.

#block-region-side-pre div:last-child {
  color: orange;
}
<div id="block-region-side-pre">
  <div class="block">a</div>
  <div class="block">b</div>
  <div class="block">c</div>
  <div class="block">d</div>
</div>

答案 1 :(得分:1)

Try this ;)

var allElems = document.querySelector("#block-region-side-pre").querySelectorAll(".block");

for(var i=0; i< allElems.length; i++);
allElems[(i-1)].className+=' lastblock';
<div id="block-region-side-pre"> 
     <div class="block">a</div>
     <div class="block">b</div>
     <div class="block">c</div>
     <div class="block">d</div>
</div>

答案 2 :(得分:0)

This should work:

 var allElems = document.querySelector("#block-region-side-pre").querySelectorAll(".block");

    for(var i=0; i< allElems.length; i++){
       if (i == allElems.length - 1 ) allElems[i].className+=' lastblock';
    }
<div id="block-region-side-pre"> 
     <div class="block">a</div>
     <div class="block">b</div>
     <div class="block">c</div>
     <div class="block">d</div>
</div>