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 相关文章推荐
Javascript-Mozilla和IE中的一个函数直接量的问题
Jan 09 Javascript
Javascript学习笔记 delete运算符
Sep 13 Javascript
js调用webservice中的方法实现思路及代码
Feb 25 Javascript
window.location不跳转的问题解决方法
Apr 17 Javascript
express的中间件bodyParser详解
Dec 04 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
Feb 03 Javascript
JQuery操作元素的css样式
Mar 09 Javascript
jquery+css实现的红色线条横向二级菜单效果
Aug 22 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
Dec 18 Javascript
Angular.js指令学习中一些重要属性的用法教程
May 24 Javascript
JS实现数组去重及数组内对象去重功能示例
Feb 02 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 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分页显示制作详细讲解
2008/11/19 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
javascript中的有名函数和无名函数
2007/10/17 Javascript
javascript 简练的几个函数
2009/08/29 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
python 计算文件的md5值实例
2017/01/13 Python
python构建深度神经网络(DNN)
2018/03/10 Python
Python操作json的方法实例分析
2018/12/06 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
python Tornado框架的使用示例
2020/10/19 Python
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
销售经理工作职责范文
2013/12/03 职场文书
微博营销计划书
2014/01/10 职场文书
经典团队口号
2014/06/06 职场文书
教师党员个人自我评价
2015/03/04 职场文书
人与自然观后感
2015/06/16 职场文书
java设计模式--七大原则详解
2021/07/21 Java/Android
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android