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 1.5最新版本的改进细节分析
Jan 19 Javascript
js获取指定日期周数以及星期几的小例子
Jun 27 Javascript
AngularJS封装指令方法详解
Dec 12 Javascript
jQuery实现的简单拖动层示例
Feb 22 Javascript
Bootstrap笔记—折叠实例代码
Mar 13 Javascript
Angular实现的table表格排序功能完整示例
Dec 22 Javascript
JavaScript继承定义与用法实践分析
May 28 Javascript
Promise.all中对于reject的处理方法
Aug 01 Javascript
js实现每日签到功能
Nov 29 Javascript
详解Vue路由自动注入实践
Apr 17 Javascript
js实现随机div颜色位置 类似满天星效果
Oct 24 Javascript
微信小程序pinker组件使用实现自动相减日期
May 07 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 Session变量不能传送到下一页的解决方法
2009/11/27 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
Angular1.x自定义指令实例详解
2017/03/01 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
Python中sort和sorted函数代码解析
2018/01/25 Python
python获取代理IP的实例分享
2018/05/07 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
软件测试面试题
2014/01/05 面试题
美德好少年主要事迹
2014/01/29 职场文书
幼儿教师研修感言
2014/02/12 职场文书
捐书倡议书
2014/08/29 职场文书
2015年暑期见闻
2015/07/14 职场文书