【问题标题】:Prepending text before a node in a child在子节点之前添加文本
【发布时间】:2013-09-25 08:04:33
【问题描述】:

我目前正在制作一个用户脚本,它将新创建的元素添加到另一个元素的子元素的末尾。我通过以下方式成功地做到了这一点:

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')" 根据我的理解。

如果没有解决方案,如果有人至少可以给出提示,我将不胜感激。 提前致谢, 丹尼尔

【问题讨论】:

    标签: javascript prepend


    【解决方案1】:

    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); 
    

    我不确定你为什么在add 为空时调用prependChild,请注意,使用null 作为第二个参数(它只是附加)调用insertBefore 是完全可以的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-16
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      相关资源
      最近更新 更多