javascript中setAttribute兼容性用法分析
本文实例分析了javascript中setAttribute兼容性用法。分享给大家供大家参考,具体如下:
1:常规属性建议使用node.XXXX。
2:自定义属性建议使用node.getAttribute("XXXX")。
3:当获取的目标是JS里的关键字时建议使用node.getAttribute("XXX"),如label中的for。
4:当获取的目标是保留字,如:class,请使用className代替。
setAttribute(stringname,stringvalue):增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。
1、样式问题
setAttribute("class",value)中class是指改变"class"这个属性,所以要带引号。
vName代表对样式赋值。
例如:
代码如下:
varinput=document.createElement("input"); input.setAttribute("type","text"); input.setAttribute("name","q"); input.setAttribute("class",bordercss);
输出时:<inputtype="text"name="q"class="bordercss">,即,input控件具有bordercss样式属性
注意:class属性在W3CDOM中扮演着很重要的角色,但由于浏览器差异性仍然存在。
使用setAttribute("class",vName)语句动态设置Element的class属性在firefox中是行的通的,但在IE中却不行。因为使用IE内核的浏览器不认识"class",要改用"className";
同样,firefox也不认识"className"。所以常用的方法是二者兼备:
代码如下:
element.setAttribute("class",value);//forfirefox element.setAttribute("className",value);//forIE
2、方法属性等问题
例如:
代码如下:
varbar=document.getElementById("testbt"); bar.setAttribute("onclick","javascript:alert('Thisisatest!');");
这里利用setAttribute指定e的onclick属性,简单,很好理解。
但是IE不支持,IE并不是不支持setAttribute这个函数,而是不支持用setAttribute设置某些属性,例如对象属性、集合属性、事件属性,也就是说用setAttribute设置style和onclick这些属性在IE中是行不通的。
为达到兼容各种浏览器的效果,可以用点符号法来设置Element的对象属性、集合属性和事件属性。
代码如下:
document.getElementById("testbt").className="bordercss"; document.getElementById("testbt").style.cssText="color:#00f;"; document.getElementById("testbt").style.color="#00f"; document.getElementById("testbt").onclick=function(){alert("Thisisatest!");}
示例:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <title>kingwell</title> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <body> <divid="idHeader"class="class-header"title="kingwell"status="1"></div> <labelid="forUserName"for="userName"title="kingwell"status="1"></label> <scripttype="text/javascript"> varel=document.getElementById("idHeader"); alert(el.getAttribute("id")); alert(el.id); //IEFirfox->idHeader alert(el.getAttribute("class")); //IE6,IE7->nullIE8,IE9,Firefox->class-header alert(el.class); //IE6,IE7,IE8->报错IE9,Firefox->undefined alert(el.getAttribute("className")); //IE6,IE7->class-header;IE8,IE9,Firefox->undefined alert(el.className); //All->class-header varelfor=document.getElementById("forUserName"); alert(elfor.getAttribute("for")); //IE6,IE7->undefinedIE8,9,Firefox->forUseName alert(elfor.for) //IE6,IE7报错,其它为undefined alert(elfor.title) //全部输出kingwell alert(elfor.status); //IE6-8->1IE9,Firefox->undefined alert(elfor.getAttribute("status")) //全部输出1 </script> </body> </html>
更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。