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程序设计有所帮助。