このコードで cleanGrid() 関数を呼び出すときの目標は、クラス「円」であった div を取り除き、それをクラス「正方形」の div に置き換えることでした。私が実際にこのコードを使用しているのは、交換可能なアイテムではないため、replaceChild() が機能しないためです。cleanGrid() への関数呼び出しをコメントアウトすると、コードは正常に実行され、ボタンはクリックごとにクラス 'square' を持つ div を追加するだけです。私が実際に望んでいるのは、cleanGrid() が「グリッド」div にあるものをすべて削除し、この関数が呼び出された後に追加する必要があるもののために余地を残すことですが、この関数が呼び出された後に何も追加できず、理由がわからない。
<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>