在子节点中的节点之前预先添加文本

时间:2013-09-25 08:04:34

标签: javascript prepend

我目前正在制作一个用户脚本,它将新创建的元素添加到另一个元素的子元素的末尾。我已成功完成以下任务:

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 pipe = document.createElement('')

     

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

但我不知道“元素”类型是什么,因为它只是文本,而不是“a”标签或“p”标签......所以我不能去“var pipe = document。 createElement('a')“来自我的理解。

如果不是解决方案的话,如果有人能够至少给出提示,我将不胜感激。 提前致谢, 丹尼尔

1 个答案:

答案 0 :(得分: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); 

我不确定当prependChild为空时你为什么要调用add,并注意用insertBefore作为第二个参数调用null是完全正常的(它只是附加)。