2011-09-11 92 views
28

如果我有一個像<div>這樣的HTML元素,裏面有一些文本或其他元素,我可以在這個div之前或之後添加一些沒有html元素的文本數據,只是純文本?在HTML元素之前或之後添加文本

我想只使用純Javascript。

喜歡的東西:

<div id="parentDiv"> 
    my text must be added here 
    <div id="childDiv"></div> 
</div> 

回答

43

是的,你可以創建document.createTextNode('the text')

文本節點,然後你就可以將它像一個元素,使用appendChild或的insertBefore。

例子#childDiv之前插入文本:只是爲了記錄

<script type="text/javascript"> 
    var parent = document.getElementById('parentDiv'); 
    var sibling = document.getElementById('childDiv'); 
    var text = document.createTextNode('new text'); 
    parent.insertBefore(text, sibling); 
</script> 
+8

您也可以嘗試「insertAdjacentText」或「insertAdjacentHTML」方法:https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentHTML –

1

您可以添加文本節點。創建節點 - document.createTextNode('text'),然後插入/ append/replace - 做任何你想做的事情。

26

var text = document.createTextNode('the text'); 
var child = document.getElementById('childDiv'); 
child.parentNode.insertBefore(text, child); 
+0

您也可以在...之後添加它... div.insertAdjacentHTML('afterEnd','my text added after'); 有誰知道你是否可以刪除它? (不使用班級或ID) – tkerwood

+0

@tkerwood當然。您需要檢索對該* Text *節點的引用,然後使用'.removeChild()'方法(在其父節點上)。 –

1

在問候的話題和用戶插入問題之前或後,這裏是後一個例子:

var text = document.createTextNode("my text must be added here."); 
    var childTag = document.getElementById("childDiv"); 

    childTag.parentNode.insertBefore(text, childTag.nextSibling); 

如果childTag不有任何兄弟姐妹,這是可以的,因爲insertBefore方法處理這種情況,並簡單地將它添加爲最後一個孩子。

也可以在創建文本節點後使用appendChild()方法,然後通過parentNode添加您的childTag。

相關問題