在不创建节点的情况下附加innerHTML

时间:2013-02-28 10:10:32

标签: html domdocument

我有一个像下面这样的元素。我想删除内部存在的blockquote并用innerHTML替换它们

 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
     <blockquote style="margin-right: 0px; margin-left: 40px; border: none; padding: 0px;">HTML</blockquote>
     <blockquote style="margin-right: 0px; margin-left: 40px; border: none; padding: 0px;">Java</blockquote>
 </blockquote>

 <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
     HTML<br>
     Java<br>
 </blockquote>

我该怎么做?我知道一种方法来实现这一点,通过创建另一个节点(如span / div),然后替换。但我不想添加任何其他元素,只想要其innerHTML元素。任何帮助深表感谢!

2 个答案:

答案 0 :(得分:0)

如果你可以使用jquery,你可以这样做:

$('blockquote > blockquote').each(function() {
  var text = $(this).text();
  $(this).after(text + '<br />');
  $(this).remove();
});

小提琴示例:http://jsfiddle.net/cjsuV/

对于YUI DOM,您可以使用:

YUI().use('node', function(Y) {
  var blockQuotes = Y.all('blockquote > blockquote');
  blockQuotes.each(function (blockQuote) {
    var textNode = document.createTextNode(blockQuote.get('innerHTML'));
    var brNode = document.createElement('br');
    blockQuote.insert(brNode, 'after');
    blockQuote.insert(textNode, 'after');
    blockQuote.remove();
  });
});

小提琴示例:http://jsfiddle.net/cjsuV/4/

答案 1 :(得分:0)

你的意思是:

document.getElementById("your-element").innerHTML = "HTML<br>Java<br>";

或者如果你想追加:

document.getElementById("your-element").innerHTML += "HTML<br>Java<br>";

注意:覆盖元素innerHTML可能会导致问题。例如,如果您有onclick个事件。查看更多: