Javascript 如何正确获取div的内容?

Javascript 如何正确获取div的内容?,javascript,jquery,html,Javascript,Jquery,Html,下面是一个包含一些HTML代码的div: <div id="MyDiv" contentEditable="true"> <p>This is the first P</p> <p id="MyPId"> <ol> <li>Text 1</li> <li>Text 2</li> </ol>

下面是一个包含一些HTML代码的div:

<div id="MyDiv" contentEditable="true">
<p>This is the first P</p>
    <p id="MyPId">
        <ol>
            <li>Text 1</li>
            <li>Text 2</li>
        </ol>
   </p>
</div>
结果如下:

<p>This is the first P</p>
    <p id="MyPId">
        </p><ol>
            <li>Text 1</li>
            <li>Text 2</li>
        </ol>
   <p></p>
仔细看,这不是我以前在DIV中的代码,而且p也丢失了。
有什么想法吗?谢谢。

这与jQuery无关,它不是bug,p元素不能有ol或ul子元素。p元素只能具有。当涉及到ol元素时,浏览器本身关闭p元素

innerHTML是元素的已解析HTML内容的字符串表示形式。表单元素具有defaultValue textarea、input[type=text]、…、defaultChecked input[type=checkbox]和其他类似属性,用于存储一些表单相关的值,但其他元素不是这样,即没有defaultInnerHTML或类似属性

一种可能的解决方案是通过AJAX获取元素的内容,因此您将获得原始html而不是解析的html。请注意,通过设置innerHTML进行解析后,将得到相同的结果

$.ajax({
    url: '/path/to/a/resource',
}).done(function(originalHTMLReturnedByTheRequest) {
     // 
});
另一种黑客方法是使用带有未知类型属性或隐藏输入的脚本标记。通过使用浏览器未知的类型属性,可以防止解释脚本标记:

<script id="originalHTML" type='whatever'>
   <p>This is the first P</p>
   <p id="MyPId">
      <ol>
          <li>Text 1</li>
          <li>Text 2</li>
      </ol>
   </p>
</script>

没有jquery和for UL是一样的。@user3815508看一看,了解这是怎么回事。但是有可能阻止代码更正吗。因为通过更正HTML代码将是错误的。。。这在我的项目中是无法再打印的。我现在明白了,但它是为其他人(例如用户)设计的。此外,我无法理解,-2票,这是什么?@user3815508 innerHTML是元素的已解析HTML内容的字符串表示形式,表单元素具有defaultValue、defaultChecked和其他类似属性,但其他元素的情况并非如此。一种可能的解决方案是通过AJAX获取元素的内容,因此您将获得原始html而不是解析的html。请注意,通过设置innerHTML进行解析后,将得到相同的结果。另一种黑客方法是使用带有未知类型属性的脚本标记。此外,我认为这是一个好问题,因为它表明DOM有一个bug。它不能因为p后面跟着ol而传递错误的HTML代码。
<script id="originalHTML" type='whatever'>
   <p>This is the first P</p>
   <p id="MyPId">
      <ol>
          <li>Text 1</li>
          <li>Text 2</li>
      </ol>
   </p>
</script>
var defaultContent = $('#originalHTML').html();