无法读取属性';parentNode';使用普通javascript时出现空错误
我正在通过javascript创建新元素,并将其附加到现有的div中:无法读取属性';parentNode';使用普通javascript时出现空错误,javascript,Javascript,我正在通过javascript创建新元素,并将其附加到现有的div中: function addElement(){ var dodato = document.getElementById('dodato'); var input = document.getElementById('input'); if(input.value!==""){ var div = document.createElement('div'); dodato
function addElement(){
var dodato = document.getElementById('dodato');
var input = document.getElementById('input');
if(input.value!==""){
var div = document.createElement('div');
dodato.appendChild(div);
var ele = dodato.lastChild;
ele.style.width = "200px";
ele.style.float = "left";
ele.innerHTML = input.value;
ele.id = input.value;
var deletE = document.createElement('span');
ele.appendChild(deletE);
var deletEe = ele.lastChild;
deletEe.innerHTML = 'X';
deletEe.style.color = "red";
deletEe.style.float = 'right';
deletEe.setAttribute('onclick','deleteE('+input.value+')');
}
}
dodato
是div,我在其中添加了所有新元素,所有这些元素都有不同的id
通过单击span,我调用new函数来删除一些添加了特定id的元素
function deleteE(delete_value){
var dodato = document.getElementById('dodato');
var el = document.getElementById(delete_value);
dodato.removeChild(el);
}
我经常遇到的错误是:
无法在“节点”上执行“removeChild”:参数1不是“节点”类型
dodato.removeChild(el);
在您的第一个代码片段中,您说
deletEe.setAttribute('onclick','deleteE('+input.value+')');
然后在deleteE
中你说:
var el = document.getElementById(delete_value);
因此,您尝试获取带有值的elementById,而不是其id。更改
到
为什么要在附加必要的div作为#dodato的子节点时,尝试获取#dodato的parentNode?您的删除函数将删除#dodato的同级节点,而不是子节点。事实上,它应该与dodato一样简单。removeChild(el)@Snowmonkey未能在“节点”上执行“removeChild”:参数1不是“节点”类型。在deleteE(
deletEe.setAttribute('onclick','deleteE('+input.value+')');
deletEe.setAttribute('onclick','deleteE('+input.id+')');