2017-03-06 60 views
1

我由JavaScript创建新元素并将其附加到现有的div:无法读取零错误的特性“parentNode”与普通的JavaScript

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我调用新的函数删除一些添加元素与特定的id。

function deleteE(delete_value){ 
    var dodato = document.getElementById('dodato'); 
    var el = document.getElementById(delete_value); 
    dodato.removeChild(el); 
} 

我不断收到的错误是:

无法执行对“节点” removeChild之“:参数1的类型不是“节点”的。

dodato.removeChild(el); 
+0

你为什么要试图让#dodato的parentNode,当你追加必要的DIV作为#dodato的子节点?您的删除功能将删除#dodato的兄弟节点,而不是子节点。 – Snowmonkey

+0

事实上,它应该和dodato.removeChild(el)一样简单 – Snowmonkey

+0

@Snowmonkey无法执行'Node'上的'removeChild':参数1不是'Node'类型。 at deleteE( – BestBudds

回答

0

在你的第一个代码段,你说

deletEe.setAttribute('onclick','deleteE('+input.value+')'); 

而且在deleteE你然后说:

var el = document.getElementById(delete_value); 

所以你想获得一个elementById其价值,不其ID。更改

deletEe.setAttribute('onclick','deleteE('+input.value+')'); 

deletEe.setAttribute('onclick','deleteE('+input.id+')'); 
相关问题