【问题标题】:Add an <br> or <p> with createElement使用 createElement 添加 <br> 或 <p>
【发布时间】:2015-06-16 17:35:25
【问题描述】:

如何在表格前后添加createElement(br)?最后我用doc.body.appendChild(p); 尝试了它,但没有任何反应。我不知道我必须在哪里写appendchild

function insertBlock(border) 
{       
    var doc = document.getElementById("frame").contentWindow.document;
    var p = doc.createElement("br");            

    var range = doc.getSelection().getRangeAt(0);
    myParent=document.getElementById("frame").contentWindow.document.body;
    if (border == true)
    {
        myTable=document.createElement("table");
        myTable.setAttribute("style","border: 1px solid #000000;");
    }
    else
    {
        myTable=document.createElement("table");
    }
    // IE5, IE6 benoetigen unbedingt tbody-Element
    myTBody=document.createElement("tbody");
    myRow=document.createElement("tr");

    myCell=document.createElement("td");

    myText=document.createTextNode("Die erste Zelle");
    myCell.appendChild(myText);
    myRow.appendChild(myCell);

    myCell=document.createElement("td");
    myText=document.createTextNode("Die zweite Zelle");
    myCell.appendChild(myText);
    myRow.appendChild(myCell);
    myTBody.appendChild(myRow);
    myTable.appendChild(myTBody);
    myParent.appendChild(myTable);

    range.insertNode(myTable);

}   

【问题讨论】:

  • 你的意思是like this?
  • 如果您这样做是为了分隔元素,那么您肯定采取了错误的方法。您应该考虑使用 CSS 添加边距来实现这一点。 &lt;br /&gt; 应该成为过去。此外,通过如此多的 DOM 操作,我还会尝试查看像 Handlebars 这样的模板库。 handlebarsjs.com
  • 也就是说,如果您查看代码中的 cmets,它们的目标是 IE5,而 IE5 本身已成为过去。

标签: javascript dom-manipulation createelement


【解决方案1】:

试试这个:

myTable.insertAdjacentHTML('afterend','<br />');
myTable.insertAdjacentHTML('beforebegin','<br />');

如果你想使用 createElement('br') 来做。

var p = doc.createElement("br");            
myParent.insertBefore(p,myTable);
myParent.insertBefore(p.cloneNode(),myTable.nextSibling);

【讨论】:

  • 添加在结尾而不是之前
  • 你想要它在结束之后和开始之前?
  • 我试过了,但我只在桌子的最后得到了休息
  • 这是哪一个?因为在编辑后的答案中在表格之后和之前都添加了
【解决方案2】:

应该在这里:

myParent.appendChild(p);
myParent.appendChild(myTable);
myParent.appendChild(p.cloneNode());

请注意,第二个是克隆。当它不是。只会添加第二个。 (您不能两次添加元素)。

当然,您也可以添加两个不同的对象。

myParent.appendChild(p);
myParent.appendChild(myTable);
myParent.appendChild(p2);

或者没有变量:

myParent.appendChild(doc.createElement("br"));
myParent.appendChild(myTable);
myParent.appendChild(doc.createElement("br"));

【讨论】:

  • 我尝试了 myParent 的开头和结尾。但是最后两个br会加,为什么呢? myParent=document.getElementById("frame").contentWindow.document.body; myParent.appendChild(p2);最后是相同的 myParent.appendChild(p);
  • 您确实在附加表格之前附加了一个
    吗?你检查过 p 和 p2 确实设置了吗?
  • 你在网上有吗?
猜你喜欢
  • 2011-06-06
  • 1970-01-01
  • 2014-10-16
  • 2011-07-14
  • 2020-05-03
  • 2011-12-05
  • 1970-01-01
  • 2016-09-08
  • 2015-11-28
相关资源
最近更新 更多