代码之家  ›  专栏  ›  技术社区  ›  Richard H

如何在javascript中获取DOM元素的HTML

  •  80
  • Richard H  · 技术社区  · 16 年前

    <div><span><b>This is in bold</b></span></div>
    

    我想获取div的HTML,包括div本身。Element.innerHTML仅返回:

    <span>...</span>
    

    有什么想法吗?谢谢

    9 回复  |  直到 11 年前
        1
  •  99
  •   Majkel    16 年前

    使用 outerHTML :

    var el = document.getElementById( 'foo' );
    alert( el.outerHTML );
    
        2
  •  91
  •   Jørn Schou-Rode dscher    16 年前

    var target = document.getElementById('myElement');
    var wrap = document.createElement('div');
    wrap.appendChild(target.cloneNode(true));
    alert(wrap.innerHTML);
    

        3
  •  10
  •   jldupont    16 年前

    div 有问题的话,提出一个 id 属性,然后使用 getElementById 在它上面:一旦获得元素,只需执行“e.innerHTML”即可检索HTML。

    <div><span><b>This is in bold</b></span></div>

    => <div id="wrap"><div><span><b>This is in bold</b></span></div></div>

    var e=document.getElementById("wrap");
    var content=e.innerHTML;
    

    那个 outerHTML

        4
  •  4
  •   pery mimon    7 年前

    老问题,但对于新来者来说:

    document.querySelector('div').outerHTML

        5
  •  3
  •   Nikolas Stephan    16 年前

    function OuterHTML(element) {
        var container = document.createElement("div");
        container.appendChild(element.cloneNode(true));
    
        return container.innerHTML;
    }
    
        6
  •  3
  •   kennebec    16 年前

    如果您想要更轻的内存占用,但脚本更长,请获取innerHTML元素并仅创建和克隆 空的

    function getHTML(who,lines){
        if(!who || !who.tagName) return '';
    
        var txt, ax, str, el= document.createElement('div');
        el.appendChild(who.cloneNode(false));
        txt= el.innerHTML;
        ax= txt.indexOf('>')+1;
        str= txt.substring(0, ax)+who.innerHTML+ txt.substring(ax);
    
        el= null;
        return lines? str.replace(/> *</g,'>\n<'): str;
        //easier to read if elements are separated
    }
    
        7
  •  2
  •   Zenon    16 年前

    由于outerHTML仅适用于IE,请使用此功能:

    function getOuterHtml(node) {
        var parent = node.parentNode;
        var element = document.createElement(parent.tagName);
        element.appendChild(node);
        var html = element.innerHTML;
        parent.appendChild(node);
        return html;
    }
    

    创建父类型的伪空元素,并对其使用innerHTML,然后将该元素重新附加到普通dom中

        8
  •  2
  •   Randy    9 年前
    var x = $('#container').get(0).outerHTML;
    
        9
  •  0
  •   Remi    11 年前

    var temp_container = document.createElement("div"); // empty div not added to DOM
    if (temp_container.outerHTML){
        var outerHTML = function(el){return el.outerHTML||el.nodeValue} // e.g. textnodes do not have outerHTML
      } else { // when .outerHTML is not supported
        var outerHTML = function(el){
          var clone = el.cloneNode(true);
          temp_container.appendChild(clone);
          outerhtml = temp_container.innerHTML;
          temp_container.removeChild(clone);
          return outerhtml;
        };
      };
    
        10
  •  -3
  •   Jason Leveille    16 年前
    var el = document.getElementById('foo');
    el.parentNode.innerHTML;