原生js在IE7下 向dom添加节点的一个bug, (本例为添加hidden input)
2014-01-23 13:23
627 查看
需求是要用js向dom结构增加1个hidden用来存放要post到服务器的数据
这段代码在IE7下无效.
一开始我原以为是下面3句代码IE7不支持, 需要用setAttribute替代 hidden.setAttribute("name", "test");
但是尝试后无效,后来老大提示说这是一个IE7的bug.
解决方法是把hidden 的html拼写到string里面, 然后在hidden的外部套上一层div
最终代码如下:
var aspnetForm = document.getElementById("aspnetForm"), //这就是新增的hidden <input type="hidden" name="test" value="name=jason;age=27;"/> hidden = document.createElement("input"); hidden.name = "test"; hidden.type="hidden"; hidden.value = "name=jason;age=27;"; aspnetForm.appendChild(hidden);
这段代码在IE7下无效.
一开始我原以为是下面3句代码IE7不支持, 需要用setAttribute替代 hidden.setAttribute("name", "test");
hidden.name = "test"; hidden.type="hidden"; hidden.value = "name=jason;age=27;";
但是尝试后无效,后来老大提示说这是一个IE7的bug.
解决方法是把hidden 的html拼写到string里面, 然后在hidden的外部套上一层div
<div> <input type="hidden" name="test" value="name=jason;age=27;"/> </div> // 把input套在div内,再把input的outerHTML设置为div的innerHTML
最终代码如下:
var forn = $("#aspnetForm")[0], container = document.createElement("div"), hiddenInput = '<input type="hidden" name="test",value="name=jason;age=27"'; // 将hidden的html string设置为container的innerHTML,然后将div套子添加到page上 container.style.display = "none"; container.innerHTML = hiddenInput; form[0].appendChild(container)
相关文章推荐
- 原生js给DOM元素添加一个或者多个类的方法总结
- 关于如何利用原生js动态给一个空对象添加属性以及属性值
- JS添加DOM元素CSS权重BUG
- 原生js如何让一个dom原生做抛物线运动(右开口u型)
- javascript 原生方法对dom节点的操作,创建、添加、删除、替换、插入、复制、移动等操作
- 原生js获取 一个dom元素距离页面可视区域的位置值 -- getBoundingClientRect
- IE7下JSON不能有多余的逗号,IE8下创建IMG节点的BUG
- 原生JS的DOM节点操作
- IE之动态添加DOM节点触发window.resize事件
- js 添加 和删除节点的方法(只在IE上可以,求助,能解决兼容性问题)
- IE之动态添加DOM节点触发window.resize事件
- js实现点击添加一个input节点
- 原生js操作Dom节点:CRUD
- 原生JS中DOM节点相关API合集
- 原生js操作dom汇总,不断添加中
- js操作DOM--添加、删除节点的简单实例
- js操作DOM--添加、删除节点的简单实例
- 原生js取dom节点可能存在的问题
- 由一个小Bug推及ie及ff的dom元素差异
- ie7下table添加新元素的bug