无法读取属性';parentNode';使用普通javascript时出现空错误

无法读取属性';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

我正在通过javascript创建新元素,并将其附加到现有的div中:

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+')');