Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 包含标记的innerHTML_Javascript_Innerhtml - Fatal编程技术网

Javascript 包含标记的innerHTML

Javascript 包含标记的innerHTML,javascript,innerhtml,Javascript,Innerhtml,可能重复: 有人能告诉我一个使用javascript的方法吗?我可以用它来获取元素的innerHTML,包括标记 请不要用jQuery 编辑: 最佳方法: function outerHTML(node){ // if IE, Chrome take the internal method otherwise build one return node.outerHTML || ( function(n){ var div = document.cr

可能重复:

有人能告诉我一个使用javascript的方法吗?我可以用它来获取元素
innerHTML
,包括标记

请不要用jQuery

编辑: 最佳方法:

function outerHTML(node){
    // if IE, Chrome take the internal method otherwise build one
  return node.outerHTML || (
      function(n){
          var div = document.createElement('div'), h;
          div.appendChild( n.cloneNode(true) );
          h = div.innerHTML;
          div = null;
          return h;
      })(node);
  }

感谢下面的@Joel提供的。

标准方法就是使用innerHTML属性

document.getElementById("element").innerHTML;
document.getElementById("element").outerHTML;
这将获得元素中所有HTML的全文。要获取元素本身,可以使用outerHTML属性

document.getElementById("element").innerHTML;
document.getElementById("element").outerHTML;

我不喜欢发布的功能,所以我认为这是更好的。请注意,IE对innerHTML和outerHTML属性的事件侦听器有不同的处理方式(这是一个一般性的注释,并不特定于以下内容),因此请小心。序列化算法也存在差异,因此您可能无法从所有浏览器获得完全相同的内部或外部TML

下面的第一个版本本质上是之前发布的版本的一个更高效的版本,它对outerHTML属性的存在使用了更好的测试(在我看来),而且它更高效,因为它不会每次都创建新函数,并且重新使用保存在闭包中的div,而不是每次都创建一个新函数。请注意,它仅对不支持outerHTML的浏览器执行此操作,否则不会保留临时div

第二个版本是首选版本,它与上面的版本非常相似,但不是获取克隆的innerHTML,而是使用实际节点,临时将其替换为自身的浅克隆,将其移动到div,获取div的innerHTML,然后将其放回。浅层克隆是必需的,因此临时替换可以维护有效的DOM(例如,可能正在获取只能用tr替换的tr的outerHTML)


我希望元素的内容包括开始和结束标记,因此它不会返回
段落内容
,而是返回如下内容:

段落内容

好的,将其修改为包含元素本身。不可能这么简单吗?我使用
innerHTML
已经有十年了,根本不知道
outerHTML
是否存在哈哈。我在到处寻找这个。这将帮助我打印一个元素,包括它的ID和类,以保持应用于它的样式:
function PrintElm(elm){let win=window.open(''PRINT','height=400,width=600');win.document.write(document.getElementById(elm).outerHTML)
…这看起来非常类似。顺便说一句,您想要的通常称为“外部HTML”。同意。我会检查这个问题的答案,因为它们实际上是相同的。@Joel感谢链接。没有看到那个问题。没问题。这就是为什么我给了您“外部HTML”的术语。我通过Google outer HTML找到了答案。我不确定这是一个好的解决方案。每次调用它时,它都会创建一个新的函数对象,这是非常低效的。此外,如果浏览器不支持outerHTML,我不确定您是否可以根据HTML5 HTML片段序列化算法依赖它的innerHTML。毕竟,innerHTML是一个专有的在HTML5之前,etary DOM属性与浏览器之间存在一些显著的差异。您可以作为一个临时函数来处理这些问题,但我肯定不会依赖它作为一个通用的解决方案。