2013-09-25 31 views
1

我目前正在製作一個用戶標記,它將一個新創建的元素預先添加到另一個元素的子元素的末尾。我已經成功地通過下面的做到了這一點:將文本添加到子節點之前

var link=document.createElement('a'); 
link.setAttribute('href', 'http://orteil.dashnet.org/experiments/cookie/'); 
link.target = 'blank'; 
link.appendChild(
document.createTextNode('Cookie Clicker Classic') 
); 
var add = document.getElementsByTagName('div')[1]; 
if(add.lastChild) add.insertBefore(link,add.lastChild); 
else add.prependChild(link); 

我現在的問題是,有需要是孩子的最後一個預先存在的節點和新創建的節點之間的隔板。我打算通過在它們之間添加「|」來做到這一點。問題是,我不知道我怎麼...都試過類似:

VAR管=使用document.createElement(」 ')

pipe.prependChild( document.createTextNode(' |') );

但我不知道「元素」類型是什麼,因爲它只是文本,而不是「a」標籤或「p」標籤......所以我不能去「var pipe =我的理解document.createElement('a')「。

如果有人能提供提示,如果不是解決方案,我將不勝感激。 在此先感謝, 丹尼爾

回答

0

你在正確的軌道上createTextNode。剛:

if(add.lastChild) add.insertBefore(link,add.lastChild); 
else add.prependChild(link); 
add.insertBefore(document.createTextNode('|'), link); 

但我認爲代碼可以更簡單:

add.insertBefore(document.createTextNode('|'), add.lastChild); 
add.insertBefore(link,add.lastChild); 

我不知道你爲什麼打電話prependChildadd是空的,請注意,這是完全罰款作爲第二個參數調用insertBeforenull(它只是附加)。

+0

是的!謝謝!我不知道insertBefore不需要第二個參數!很聰明!並感謝清理我的代碼哈哈,我不是一個職業還沒有:P也謝謝你是如此快速和準確。 –

+0

@ZacktonJochem:不客氣,不客氣,不客氣! :-) –