javascript中setAttribute()函数使用方法及兼容性


Posted in Javascript onJuly 19, 2015

setAttribute()函数可以设置对象的属性,如果不存在此属性,则会创建此属性。

语法结构:

el.setAttribute(name,value)

参数列表:

参数 描述
name 必需。规定要设置的属性名。
value 必需。规定要设置的属性值。

代码实例:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8"> 
<script type="text/javascript"> 
window.onload=function(){ 
 var mydiv=document.getElementById("mydiv"); 
 mydiv.setAttribute("id","newid"); 
 alert(mydiv.getAttribute("id")); 
} 
</script> 
</head> 
<body> 
<div id="mydiv"></div> 
</body> 
</html>

以上代码可以重新设置div的id属性值,并且弹出新设置的id属性值。
实例二:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<script type="text/javascript"> 
window.onload=function(){ 
 var mydiv=document.getElementById("mydiv"); 
 mydiv.setAttribute("newAttr","attrValue"); 
 alert(mydiv.getAttribute("newAttr")); 
} 
</script> 
</head> 
<body> 
 <div id="mydiv"></div> 
</body> 
</html>

以上代码可以设置div的newAttr属性值,并且弹出此属性值。这里需要特别注意的是,因为div默认并不具有newAttr属性,这个时候setAttribute()函数会首先创建此属性,然后再给它赋值。

以上两个代码实例在各主流浏览器中都能够成功的执行,但这并不说明setAttribute()函数能够兼容各个浏览器。

再看一段代码实例:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<style type="text/css"> 
.textcolor{ 
 font-size:18px; 
 color:red; 
} 
</style> 
<script type="text/javascript"> 
window.onload=function(){ 
 var mydiv=document.getElementById("mydiv"); 
 mydiv.setAttribute("class","textcolor"); 
} 
</script> 
</head> 
<body> 
 <div id="mydiv"></div> 
</body> 
</html>

以上代码,在标准浏览器中能够将字体大小设置为18px,字体颜色设置为红色,但是在IE6和IE7浏览器中却不能够生效。

不过依然可以使用mydiv.getAttribute("class")获取属性值"textcolor"。

也就是说在IE6或者IE7浏览器中,setAttribute()函数可以使用,但是并不是对所有的属性都有效。

下面就列举一下存在上述问题的属性:

1.class

2.for

3.cellspacing

4.cellpadding

5.tabindex

6.readonly

7.maxlength

8.rowspan

9.colspan

10.usemap

11.frameborder

12.contenteditable

13.style

为了解决上述问题就要写一个通用的跨浏览器的设置元素属性的接口方法:

dom=(function(){
var fixAttr={
 tabindex:'tabIndex',
 readonly:'readOnly',
 'for':'htmlFor',
 'class':'className',
  maxlength:'maxLength',
  cellspacing:'cellSpacing',
  cellpadding:'cellPadding',
  rowspan:'rowSpan',
  colspan:'colSpan',
  usemap:'useMap',
  frameborder:'frameBorder',
  contenteditable:'contentEditable'
 },
    
 div=document.createElement('div');
 div.setAttribute('class','t');
    
 var supportSetAttr = div.className === 't';
    
 return {
  setAttr:function(el, name, val){
  el.setAttribute(supportSetAttr ? name : (fixAttr[name] || name), val);
  },
  getAttr:function(el, name){
  return el.getAttribute(supportSetAttr ? name : (fixAttr[name] || name));
 }
}
})();

首先,标准浏览器直接使用原始属性名;其次,IE6/7非以上列举的属性仍然用原始属性名;最后这些特殊属性使用fixAttr,例如class。

那么上面的代码实例修改为以下形式即可:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8"> 
<style type="text/css"> 
.textcolor{ 
 font-size:18px; 
 color:red; 
} 
</style> 
<script type="text/javascript"> 
dom=(function(){ 
var fixAttr={ 
 tabindex:'tabIndex', 
 readonly:'readOnly', 
 'for':'htmlFor', 
 'class':'className', 
  maxlength:'maxLength', 
  cellspacing:'cellSpacing', 
  cellpadding:'cellPadding', 
  rowspan:'rowSpan', 
  colspan:'colSpan', 
  usemap:'useMap', 
  frameborder:'frameBorder', 
  contenteditable:'contentEditable' 
 }, 
     
 div=document.createElement('div'); 
 div.setAttribute('class','t'); 
     
 var supportSetAttr = div.className === 't'; 
     
 return { 
  setAttr:function(el, name, val){ 
  el.setAttribute(supportSetAttr ? name : (fixAttr[name] || name), val); 
  }, 
  getAttr:function(el, name){ 
  return el.getAttribute(supportSetAttr ? name : (fixAttr[name] || name)); 
 } 
} 
})(); 
window.onload=function(){ 
 var mydiv=document.getElementById("mydiv"); 
 dom.setAttr(mydiv, 'class', 'textcolor'); 
} 
</script> 
</head> 
<body> 
</body> 
</html>

以上代码可以在各主流浏览器中都有效,都可以将字体大小设置为18px,颜色设置为红色。
至于style属性可以使用el.style.color="xxx"这种形式进行兼容。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
jquery获得下拉框值的代码
Aug 13 Javascript
JavaScript获取FCK编辑器信息的具体方法
Jul 12 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
jQuery CSS3自定义美化Checkbox实现代码
May 12 Javascript
最简单的tab切换实例代码
May 13 Javascript
jquery分隔Url的param方法(推荐)
May 25 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
Dec 08 Javascript
EasyUI为Numberbox添加blur事件的方法
Mar 05 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
Apr 10 Javascript
JavaScript之json_动力节点Java学院整理
Jun 29 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
Aug 22 Javascript
jQuery zTree如何改变指定节点文本样式
Oct 16 jQuery
jQuery的position()方法详解
Jul 19 #Javascript
ExtJs动态生成treepanel的Json格式
Jul 19 #Javascript
javascript中mouseover、mouseout使用详解
Jul 19 #Javascript
javascript实现的简单计时器
Jul 19 #Javascript
javascript中setInterval的用法
Jul 19 #Javascript
js中跨域方法原理详解
Jul 19 #Javascript
javascript获取网页宽高方法汇总
Jul 19 #Javascript
You might like
php 一维数组的循环遍历实现代码
2017/04/10 PHP
php获取微信openid方法总结
2019/10/10 PHP
jquery 经典动画菜单效果代码
2010/01/26 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
python实现bucket排序算法实例分析
2015/05/04 Python
简介Django框架中可使用的各类缓存
2015/07/23 Python
python购物车程序简单代码
2018/04/18 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
Python实现文件压缩和解压的示例代码
2020/08/12 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
活动总结怎么写
2014/04/28 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
2014年秘书工作总结
2014/11/25 职场文书
合作与交流自我评价
2015/03/09 职场文书
python实现三次密码验证的示例
2021/04/29 Python
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS