querySelectorAll ne fonctionne pas

J'ai une exigence où j'ai à la collecte de la dernière .div à l'intérieur d'un conteneur et d'appliquer un peu de logique métier. La sélection de la dernière .div doit être dynamique, car l'utilisateur a la possibilité d'ajouter/supprimer des .div éléments.

J'ai d'abord essayé avec querySelectorAll mais il n'a pas l'air de fonctionner. J'ai donc décidé de le changer pour getElementsByClassName et étonnamment, il a travaillé avec la même logique. Quelqu'un peut-il m'aider avec la raison pour laquelle le remove_div ne fonctionne pas, alors que le second ( remove_div_2 )?

Note: je ne suis pas à la recherche d'une solution/solution à la question parce que j'ai déjà procédé à la deuxième option. Je veux juste savoir la raison pour laquelle l'option avec querySelectorAll ne fonctionne pas.

Ci-dessous mon 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');
       };
   }

OriginalL'auteur | 2013-09-11