美文网首页让前端飞Web前端之路
IE踩坑:innerHtml置空后,之前保存的其内部元素丢失

IE踩坑:innerHtml置空后,之前保存的其内部元素丢失

作者: 一木一生 | 来源:发表于2019-08-09 17:21 被阅读3次

用js原生写日历的时候,为了兼容IE9+,踩了很多坑,其中一个就是innerHtml的问题。

简要描述:

  • 当时的需求:一个父元素中有很多子元素,我只需要其中的某一个元素,其他元素丢弃。

  • 想到的解决方案:先将子元素保存,然后将父元素innerHtml置为空,然后再将子元素加入。

  • 结果:在Chrome、Firfox中无问题,在IE中无效,IE中保存的子元素其innerHtml会丢失......(IE测试版本为9,10,11都无效)

测试代码1:

  • index.html部分
<div id="demo">
    <div id="test">12345</div>
</div>
  • test.js
var demo = document.getElementById("demo"),
    child = demo.firstElementChild;
console.log(child);  // 置空前
demo.innerHTML = "";
console.log(child);   // 置空后
demo.appendChild(child);
console.log(demo);

测试结果1:


Chrome结果 Firefox结果 IE结果,当前为IE11

测试代码2:

  • 该测试中test.js未变,改了一下html中的结构
<div id="demo">
    <div id="test">
        <div>
            dsfjdsoi
        </div>
    </div>
</div>

测试结果2:

Chrome结果 Firefox结果 IE结果,当前为IE11

结论:

  • 对比两次发现,有点诡异啊......Chrome、firfox完全满足预期,IE就有点不太懂了,测试1的时候在未置空前至少div中是还有值的,在测试2中就都没有值了...
  • 网上搜了很多都没发现解答,求大佬解惑.....

相关文章

  • IE踩坑:innerHtml置空后,之前保存的其内部元素丢失

    用js原生写日历的时候,为了兼容IE9+,踩了很多坑,其中一个就是innerHtml的问题。 简要描述: 当时的需...

  • AFNetworking multipart/form-data

    踩坑的地方,自己設置Content-type 覆盖了内部设置的 content-type 和boundary,导...

  • DOM操作

    题目1: dom对象的innerText和innerHTML有什么区别?innerHTML会显示元素内部的HTML...

  • 微信开发--配置篇

    近段时间在做微信相关开发,因为之前做的笔记丢失,原来踩过的坑又踩了一遍,所以这次准备记录下来,避免以后重复踩坑,本...

  • innerHTML、insertAdjacentHTML、doc

    innerHTML 的作用是在元素内部插入一段 HTML 代码;insertAdjacentHTML() 将指定的...

  • UncaughtTypeError:Cannotsetprope

    出现标题上的错误原因是innerHTML在要写入的元素之前执行了 解决的方法就是将innerHTML放在元素之后。

  • Swift 4 容器类型

    数组 字面值 空数组,因为空数组元素为空,swift无法推断其内部元素的数据类型,所以需要显示指定其数组类型。 创...

  • Java版链表逆置

    在此记录一下java版的链表逆置,作为之前踩过的坑,希望以后都能记住。包含逆置方法和测试方法,可以直接运行测试。

  • DOM 文档对象模型

    1.dom对象的innerText和innerHTML有什么区别? innerText:得到dom对象(元素)内部...

  • 行内元素与块级元素的区别

    这个 行内元素与块级元素的特性的坑,终于踩过去了。这是初级前端们经常踩的一个坑,了解后对页面布局会有一个飞一般的长...

网友评论

    本文标题:IE踩坑:innerHtml置空后,之前保存的其内部元素丢失

    本文链接:https://www.haomeiwen.com/subject/ownhjctx.html