2012-04-23 220 views
0

可能重複:
Inserting an element
How to do insert After() in JavaScript without using a library?追加到div的,而不是身體

我的javascript中的身體後增加了一個聊天窗口中的項目這一點該頁面,我想改變它,以便在我指定的div「myPublisherDiv」之後添加聊天窗口。我認爲這很簡單,有什麼想法?提前致謝!

var div = document.createElement('div'); 
    div.setAttribute('id', 'stream' + streams[i].streamId); 
    document.body.appendChild(div); 
+0

撕開嗯,我只注意到你的標題和你的問題的文本不同......如果你只是想追加,似乎你只需要瞭解'getElementById' :https://developer.mozilla.org/en/DOM/document.getElementById – 2012-04-23 21:40:35

+0

僅供參考,''div.setAttribute('id','stream'+ streams [i] .streamId);'可以寫成'div.id ='stream'+ streams [i] .streamId;'; ['id'是*元素上反映的屬性](http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-63534901),並且得到普遍支持。 – 2012-04-23 21:44:43

回答

1

把一個id你的DIV

<div id="myDiv">..</div> 

然後追加的東西出來與appendChild

document.getElementById("myDiv").appendChild(div); 
+0

這實際上只取代了內容。 – Amberlamps 2012-04-23 21:42:26

+0

@Amberlamps oops,我的意思是'+ =' – ajax333221 2012-04-23 21:43:27

+1

對'innerHTML'使用'+ ='是一種反模式,它會導致瀏覽器執行比所需更多的工作,並且刪除事件處理程序內容。使用'appendChild'。 – 2012-04-23 21:45:44

1

這是一個有點棘手。 insertBefore很簡單,對於一個節點之後插入我寫了一個豆蔻輔助函數:

function insertAfter(newElement, referenceElement) { 
    referenceElement.parentNode.insertBefore(newElement, referenceElement.nextSibling); 
} 

var div = document.createElement('div'); 
... 
insertAfter(document.getElementById("myPublisherDiv"), div); 

但也見https://stackoverflow.com/a/1559632/1048572

+1

而是使用'nextSibling'而不是'nextNode' – Amberlamps 2012-04-23 21:44:09

+0

糟糕,已編輯。無論如何感謝:-) – Bergi 2012-04-23 21:45:58

1

這應該做到這一點..

var div = document.createElement('div'); 
div.setAttribute('id', 'stream' + streams[i].streamId); 

var target = document.getElementById('myPublisherDiv'); 

target.parentNode.insertBefore(div, target.nextSibling); 

How to do insert After() in JavaScript without using a library?

+3

難道你不應該投票關閉它作爲一個重複呢? ;) – 2012-04-23 21:43:58

+1

只是.. * 我沒有更新代碼來匹配OP的代碼,這不算什麼? :p * – 2012-04-23 21:50:24