2013-12-20 155 views
0

所以我想写出输入值项内的文本,并在文本的右边创建另一个节点。但是这个文本只是在输入文本旁边显示[object HTMLParagraphElement],为什么它不显示文本?找不到元素

我不知道我做错了什么,请帮助我!

所以显示输入的文本,但没有显示我创建的其他p元素?

下面是代码:

var lista = document.getElementById("lista"); 

var li = document.createElement("li"); 

var del = document.createElement("p"); 
var delt = document.createTextNode("remove this"); 
del.appendChild(delt); 


var item = document.getElementById("item"); 

var text = document.createTextNode(item.value + " | " + del); 


li.appendChild(text); 
lista.appendChild(li); 
+0

也请出示的HTML代码。 –

回答

0

改变你的代码使用del.innerHTML。

var text = document.createTextNode(item.value + " | " + del.innerHTML); 

document.createTextNode的参数必须是字符串。而innerHTML是元素对象的html代码。

1

你并不需要创建文本节点的文本追加。刚刚成立的innerHTML您所创建的元素:

var myPar = document.createElement('p'); 
myPar.innerHTML = "remove this"; 

li.innerHTML = myPar.outerHTML; //this would be the tag and its text <p>remove this</p> 

// other code here. 

演示Fiddle

1

问题是此时的线

var text = document.createTextNode(item.value + " | " + del); 

中,“德尔”中引用的段落元素, 你可以有“del.innerHtml”而不是'del'

0

http://jsfiddle.net/4YgXG/

HTML:

<ul id="lista"></ul> 

JS:

// EXAMPLE! 
var lista = document.getElementById("lista"); 
var item = document.getElementById("item"); 

for(var i=0;i<100;i++){ 
    var li = document.createElement("li"); 
    var del = document.createElement("p"); 
    del.innerHTML = 'Remove this'; 
    li.appendChild(del); 
    lista.appendChild(li); 
}