JavaScript动态修改节点属性后innerHTML在IE与Firefox中的表现差异

作者:像素猫时间:2026-10-25 01:45:11浏览:618

本文探讨在动态为子节点添加私有属性后,通过父节点的innerHTML获取HTML字符串时,IE与Firefox浏览器的行为差异。研究发现,使用点语法赋值时,Firefox无法获取改变;而使用setAttribute时,若赋值为对象类型,IE无法获取。文章详细列举了不同数据类型和赋值方式下的具体表现,为跨浏览器开发提供兼容性参考。

HTML结构与JavaScript初始化代码

<div id="parentnode">


<span id="childnode">child</span>


</div>


<script type="text/javascript">


var childNode = document.getElementById("childnode") , parentNode = document.getElementById("parentnode");


</script>



默认属性赋值与innerHTML表现

为子节点设置默认属性时:


childNode.className = "childClass"; 或: childNode.className = new String("childClass");


parentNode.innerHTML 在 IE 和 FF 中均可获取 [ <span class="childClass" id="childnode">child</span> ]



私有属性赋值与innerHTML表现

为子节点设置私有属性时:


childNode.type = "childType";


仅当 IE 浏览器下,parentNode.innerHTML 能获取 [ <span type="childType" id="childnode">child</span> ]


childNode.type = new String("childType"); //Object对象


parentNode.innerHTML 在 IE 和 FF 中均无法获取 [ <span id="childnode">child</span> ]



setAttribute方法与innerHTML表现

childNode.setAttribute("type","childType");


parentNode.innerHTML 在 IE 和 FF 中均可获取 [ <span class="childClass" id="childnode">child</span> ]


childNode.setAttribute("type", new String("childType"));


仅当 FF 浏览器下,parentNode.innerHTML 能获取 [ <span class="childClass" id="childnode">child</span> ]



不同赋值方式下的兼容性总结

动态添加私有属性后获取 innerHTML:若采用 .属性 方式赋值,FireFox 无法获取任何数据类型;若赋值为对象类型,IE 无法通过 innerHTML 获取。


若使用 setAttribute 方法赋值:FireFox 可获取任何数据类型;若赋值为对象类型,IE 无法获取。


总结:在 IE 环境下,赋值类型为对象时 innerHTML 无法获取其改变;在 FireFox 环境下,.属性 方式无法获取其改变。

作者最新文章