Dans ce code, lorsque j'appelle la fonction cleanGrid(), mon but était de me débarrasser de la div qui était la classe 'circle' et de la remplacer par une div avec la classe 'square'. Pour ce que j'utilise vraiment ce code car ils ne sont pas remplaçables, replaceChild() ne fonctionnerait pas. Si je commente l'appel de fonction à cleanGrid() le code fonctionne bien et le bouton ajoute juste un div avec la classe «carré» pour chaque clic. Ce que je veux réellement arriver est que cleanGrid() supprime tout ce qui est dans la div 'grid' et laisse de la place pour ce qui devrait être ajouté après que cette fonction soit appelée - mais rien ne peut être ajouté après que cette fonction est appelée et je suis pas certain de pourquoi.Pourquoi removeChild() m'empêche de faire appendChild() dans une fonction Javascript?
<body>
<div id="grid"><div class="circle">hello</div></div>
<button onclick="addSquare()">add a Square</button>
<script language="JavaScript">
var g = {};
g.myGrid = document.getElementById("grid");
function addSquare() {
// Calling cleanGrid() is giving me problems.
// I want to wipe everything clean first and then add the divs of the 'square' class.
// But instead it just clears the 'grid' div and doesn't allow anything to be added.
cleanGrid(); // WHY NOT?
var newSquare = document.createElement("div");
newSquare.className = "square";
newSquare.innerHTML = "square";
g.myGrid.appendChild(newSquare);
}
function cleanGrid() {
var x = document.getElementById("grid");
while(x.childNodes) {
var o = x.lastChild;
x.removeChild(o);
}
}
</script>
</body>