天天看点

js document.createElement 浏览器兼容处理

1:innerText

IE支持,FIREFOX不支持

解决办法:用innerHTML,2种浏览器都识别innerHTML

2:document.createElement_x

document.appendChild

在往表里插入行时

FIREFOX支持,IE不支持

解决办法:把行插入到TBODY中,不要直接插入到表

3:setAttribute('style','color:red;')

FIREFOX 支持(除了IE,现在所有浏览器都支持),IE不支持

解决办法:不用setAttribute('style','color:red')

而用object.style.cssText = 'color:red;'(这写法也有例外)

最好的办法是上面种方法都用上,万无一失 ^_^

4:class

setAttribute('class','styleClass')

FIREFOX 支持,IE不支持(指定属性名为CLASS,IE不会设置元素的CLASS属性,相反只使用SETATTRIBUTE时IE自动识别CLASSNAME属性)

解决办法:

setAttribute('className','styleClass')

2 种都用上

5:用setAttribute设置事件

var obj = document.getElementByIdx_x('objId');

obj.setAttribute('onclick','funcitonname();');

FIREFOX 支持,IE不支持

解决办法:

IE中必须用点记法来引用所需的事件处理程序,并且要用赋予匿名函数

如下:

var obj = document.getElementByIdx_x('objId');

obj.οnclick=function(){fucntionname();};

这种方法所有浏览器都支持

6:建立单选钮

IE以外的浏览器

var rdo = document.createElement_x('input');

rdo.setAttribute('type','radio');

rdo.setAttribute('name','radiobtn');

rdo.setAttribute('value','checked');

IE:

var rdo =document.createElement_x("<input type='radio' name='radiobtn' value='checked'>");

解决办法:

这一点区别和前面的都不一样。这次完全不同,所以找不到共同的办法来解决,那么只有IF-ELSE了

万幸的是,IE可以识别出document的uniqueID属性,别的浏览器都不可以识别出这一属性。问题解决。

0:共同的一些技巧

在动态建立INPUT型输入元素时,一般是先加入,在设置TYPE。这就有可能出错

好习惯:var btn = document.createElement_x('input');

btn.setAttribut('type','button');

document.getElementByIdx_x('formId').appendChild(btn);

GWT-EXT2.0+struts2+hibernate+ejb++spring