2015-04-28 78 views
1

一直在此停留一段時間,試圖添加多個新的p元素到一個div,但它只是將內容添加到第一個,而不是創建一個新的。按下按鈕追加新的段落

var p = document.createElement("p"); 
var output = document.getElementById('output'); 

功能

p.appendChild(document.createTextNode("hello"+"\n")); 
output.appendChild(p); 

感謝提前任何幫助,我需要在那裏我被允許新的段落無限量,直至滿足條件的解決方案。

+2

...因爲你只能創建一個段落和文本節點追加到它的點擊,計數器你說你想要做的。 –

+0

感謝戴夫,我會如何每次創建一個新的段落。我是新來的JavaScript。 – Peter

+0

對於初學者,您需要每次調用'document.createElement(「p」);''。將該行移入按鈕按鈕功能。 –

回答

1

問題是,您只創建一個段落,但在其中添加多個文本節點。儘管看起來如此,但output.appendChild(p)不會追加初始p多一次。事實上,如果元素已經在DOM中(就像在第一次點擊時那樣),appendChild只是將元素移動到新的位置。但在你的情況下,新的位置與原始位置相同。因此,您只需每次點擊即可創建新的文本節點。

你需要在每一次點擊創建新HTMLParagraphElement:

document.querySelector('button').onclick = function() { 
 
    var p = document.createElement("p"); 
 
    var output = document.getElementById('output'); 
 
    p.appendChild(document.createTextNode("hello"+"\n")); 
 
    output.appendChild(p); 
 
};
<button>Click</button> 
 
<div id="output"></div>