JavaScript动态修改节点属性后innerHTML在IE与Firefox中的表现差异
本文探讨在动态为子节点添加私有属性后,通过父节点的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 环境下,.属性 方式无法获取其改变。
js-cookie 安装与基础用法:set、get、remove 详解
2026-11-05 16:35:06
适合JavaScript初学者的实战项目:制作简易待办事项列表
2026-11-05 16:17:07
JS打开新标签页时怎么通过URL传递参数
2026-11-05 12:21:08
sigma.js 自定义节点样式:设置颜色、大小及标签显示的技巧
2026-11-05 09:55:00
JS 生成的统计图怎么导出为 PNG 图片或 PDF 文件?
2026-11-05 09:37:58
