javascript中setAttribute兼容性用法分析


Posted in Javascript onDecember 12, 2016

本文实例分析了javascript中setAttribute兼容性用法。分享给大家供大家参考,具体如下:

1:常规属性建议使用 node.XXXX。
2:自定义属性建议使用node.getAttribute("XXXX")。
3:当获取的目标是JS里的关键字时建议使用node.getAttribute("XXX"),如label中的for。
4:当获取的目标是保留字,如:class,请使用className代替。

setAttribute(string name, string value):增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。

1、样式问题

setAttribute("class", value)中class是指改变"class"这个属性,所以要带引号。

vName代表对样式赋值。

例如:

代码如下:

var input = document.createElement("input");
input.setAttribute("type", "text");
input.setAttribute("name", "q");
input.setAttribute("class",bordercss);

输出时:<input type="text" name="q" class="bordercss">,即,input控件具有bordercss样式属性

注意:class属性在W3C DOM中扮演着很重要的角色,但由于浏览器差异性仍然存在。

使用setAttribute("class", vName)语句动态设置Element的class属性在firefox中是行的通的,但在IE中却不行。因为使用IE内核的浏览器不认识"class",要改用"className";

同样,firefox 也不认识"className"。所以常用的方法是二者兼备:

代码如下:

element.setAttribute("class", value); //for firefox
element.setAttribute("className", value); //for IE

2、方法属性等问题

例如:

代码如下:

var bar = document.getElementById("testbt");
bar.setAttribute("onclick", "javascript:alert('This is a test!');");

这里利用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("This is a test!"); }

示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>kingwell</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<div id="idHeader" class="class-header" title="kingwell" status="1"></div>
<label id="forUserName" for="userName" title="kingwell" status="1"></label>
<script type="text/javascript">
var el = document.getElementById("idHeader");
alert(el.getAttribute("id"));
alert(el.id);
// IE Firfox->idHeader
alert(el.getAttribute("class"));
//IE6,IE7 -> null IE8,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
var elfor = document.getElementById("forUserName");
alert(elfor.getAttribute("for"));
//IE6,IE7->undefined IE8,9,Firefox->forUseName
alert(elfor.for )
//IE6,IE7报错,其它为undefined
alert(elfor.title)
//全部输出kingwell
alert(elfor.status);
//IE6-8 -> 1 IE9,Firefox->undefined
alert(elfor.getAttribute("status"))
//全部输出 1
</script>
</body>
</html>

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery 源代码显示控件 (Ajax加载方式).
May 18 Javascript
JavaScript 异步调用框架 (Part 2 - 用例设计)
Aug 03 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
Apr 05 Javascript
javascript中使用new与不使用实例化对象的区别
Jun 22 Javascript
实例代码讲解jquery easyui动态tab页
Nov 17 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
Jun 03 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
详解Angular Reactive Form 表单验证
Jul 06 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
May 03 Javascript
vue源码学习之Object.defineProperty 对数组监听
May 30 Javascript
vue 实现Web端的定位功能 获取经纬度
Aug 08 Javascript
js实现随机点名功能
Dec 23 Javascript
jQuery焦点图左右转换效果
Dec 12 #Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
Dec 12 #Javascript
jquery利用json实现页面之间传值的实例解析
Dec 12 #Javascript
多种方式实现js图片预览
Dec 12 #Javascript
JavaScript实现多栏目切换效果
Dec 12 #Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
Dec 12 #Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
Dec 12 #Javascript
You might like
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
php显示时间常用方法小结
2015/06/05 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
python判断字符串是否纯数字的方法
2014/11/19 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
用 python 进行微信好友信息分析
2020/11/28 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
美国智能家居专家:tink
2019/06/04 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
最新的咖啡店创业计划书
2013/12/30 职场文书
写自荐信三大法宝
2014/01/24 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
企业党建工作总结2015
2015/05/26 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL