<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
window.onload = function() {
var oBtn = document.getElementById('btn1');
var oTxt = document.getElementById('txt1');
var oUl = document.getElementById('ul1');
var aA = [];
oBtn.onclick = function() {
var oLi = document.createElement('li');
var aLi = document.getElementsByTagName('li');
// add <a> to li
oLi.innerHTML = oTxt.value + ' <a href="javascript:;">delete</a>';
if (aLi.length > 0) {
oUl.insertBefore(oLi, aLi[0]);
} else {
oUl.appendChild(oLi);
}
// everytime add an li, add <a> which is in <li> to aA
aA.push(oLi.children[0]);
};
for (var i = 0; i < aA.length; i++) {
aA[i].onclick = function() {
oUl.removeChild(this.parentNode);
}
}
}
</script>
</head>
<body>
<input id='txt1' type="text" />
<!-- Add an li element -->
<input id="btn1" type="button" value="Add li" />
<ul id="ul1">
</ul>
</body>
</html>
Привет всем, я новичок JavaScript, и у меня есть проблемы в случае щелчка, после моя проблема:Простой OnClick не удается удалить дочерний узел
Когда я нажимаю oBtn.onclick
, это создать li
элемент до ul
, затем innerHTML
из li
содержит тег «a» и помещается в массив с именем aA.
Однако в aA[i].onclick
он не работает, и в чем проблема в моем коде?
Нет никакой попытки удалить элементы в обработчике кликов. Цикл, содержащий вызов 'removeChild', никогда не вызовет его, так как в этой точке' aA' пуст, поэтому тело цикла никогда не будет выполнено. –
Это связано с тем, что вы привязываете якорный клик до его создания. – Pete
Не совсем ясно, чего вы пытаетесь достичь. Ясно: какой код должен делать то, что вы делаете, какие результаты вы видите и какие результаты вы ожидали увидеть. –