I have a requirement when I have to take the last .div into a container and apply some business logic to it. The selection of the last .div should be dynamic, since the user has the ability to add / remove .div elements.
At first I tried with querySelectorAll , but it did not seem to work. So I decided to change it to getElementsByClassName and it is amazing that it worked with the same logic. Can someone please help me on the reason why remove_div not working and the second ( remove_div_2 )?
Note. I am not looking for a fix / solution to the problem, because I already went through the second option. I just want to know why the querySelectorAll option querySelectorAll not work.
Below is my code:
HTML:
<div id='container'> <div id='div1' class='div'>This is Div 1</div> <div id='div2' class='div'>This is Div 2</div> <div id='div3' class='div'>This is Div 3</div> </div> <button type='button' id='append_div'>Append Div</button> <button type='button' id='remove_div'>Remove Div</button> <button type='button' id='remove_div_2'>Remove Div 2</button>
JavaScript:
window.onload = function () { var elementToStyle = document.querySelectorAll("#container .div"); elementToStyle[elementToStyle.length - 1].classList.add('red'); document.getElementById('append_div').onclick = function () { var divToInsert = document.createElement('div'); divToInsert.id = 'new_div'; divToInsert.className = 'div'; divToInsert.innerHTML = 'This is an appended div'; document.getElementById('container').appendChild(divToInsert); var elToStyle = document.querySelectorAll("#container .div"); for (i = 0; i < elToStyle.length; i++) elToStyle[i].classList.remove('red'); elToStyle[elToStyle.length - 1].classList.add('red'); }; document.getElementById('remove_div').onclick = function () { var elToStyle = document.querySelectorAll("#container .div"); document.getElementById('container').removeChild(elToStyle[elToStyle.length - 1]); elToStyle[elToStyle.length - 1].classList.add('red'); }; document.getElementById('remove_div_2').onclick = function () { var elToStyle = document.getElementsByClassName('div'); document.getElementById('container').removeChild(elToStyle[elToStyle.length - 1]); elToStyle[elToStyle.length - 1].classList.add('red'); }; }
javascript html html5 selectors-api
user2700358
source share