使用JS删除<div>部分无法按预期工作

时间:2015-11-30 09:36:40

标签: javascript dom

我尝试使用以下简单代码从DOM中删除周围的div部分:

&#13;
&#13;
document.getElementById("1").outerHTML = document.getElementById("1").innerHTML;
&#13;
<p>
    Part 1
    <div id="1">
        <span id ="2">
            Part 2
        </span>
        Part 3
    </div>
    Part 4
</p>
&#13;
&#13;
&#13;

应用脚本的预期输出是所有部分都在一行内。但他们不是。当我从HTML代码手动删除div部分时,它们在一行中。我有什么想法我做错了吗?

谢谢,

Andreas

3 个答案:

答案 0 :(得分:1)

您不能将块级元素嵌套在HTML中的内联元素中。换句话说,div内的p在所有HTML标准中都无效。此外,在使用符合标准的HTML解析器时,无法在<div>内的<p>内放置<div>元素,因为开始<p>标记会自动关闭div元素

如果周围的元素是<div> Part 1 <div id="1"> <span id ="2"> Part 2 </span> Part 3 </div> Part 4 </div> ,那么您的代码是正确的。

InetAddress.getByName(ip).isReachable(timeout);

答案 1 :(得分:0)

document.getElementById("1").outerHTML将返回(1):

<div id="1">
   <span id ="2">
      Part 2
   </span>
   Part 3
</div>

document.getElementById("1").innerHTML;将返回(2):

<span id ="2">
   Part 2
</span>
Part 3

您的代码意味着:将(1)替换为(2)

答案 2 :(得分:0)

问题是由于错误的HTML结构造成的。因为,P元素“不能包含块级元素(包括P本身)”。

Check this link for more info

解决方案:用div替换极端P元素。检查下面的链接(工作代码)。

<div id="3">
    Part 1
    <div id="1">
        <span id ="2">
            Part 2
        </span>
        Part 3
    </div>
    Part 4
</div>

var newHtml = document.getElementById('1').innerHTML;
document.getElementById("1").outerHTML=newHtml;

Working Code