IE 不兼容的几个js问题及解决方法
一直以来,IE对于DOM操作有一些不和谐的地方,烂笔头又来了:
1 Table的问题
在动态新增tr或者td时,createElecment() 一般用appendChild();都不生效,解决办法是用新增tbody, 如
var table=document.createElement("table");
var tbodoy=document.createElement("tbody");
var tr=document.createElement("tr");
var td=document.createElement("td");
table.appendChild(tbody.appendChild(tr.appendChild(td)));
2 innerHTML的问题
在IE中不支持动态的写table的innerHTML,但是支持div或者span的innerHTML动态读写。
3 设置样式问题
内联样式: 如果使用obj.setAttribute("stylename");stylename对应的样式不会生效。解决方法:obj.style.cssText="stylename";
外部样式: obj.setAttribute("class":"className"); calssName对应的外部样式照样不会生效。解决方法:ojb.setAttribute("className","className");
在此提醒一下,在使用一些dojo等框架时,如果遇到有设置class时,如
dojo.create("div",{"class":"style1"},parent,"last")中class一定要用引号。
4 设置属于元素的事件
对于一个文本obj,IE不支持obj.setAttribute("onclick","fun()"),设置它的onclick属性做法如下:obj.onclick=function(){},注意的是:此处需要放一个匿名的函数.
5 动态创建单选按钮
用create和setAttribute()是解决不了问题的。解决方法是:
直接document.createElement("<input type='radio' name='myradio'></input>");来的更痛快一些。
6 最后就是用document判断浏览器是否为ie的一个方法,document.uniqueID, 因为只有ie唯一能识别uniqueID。
以上为总结,待续。