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 学习笔记(十一)
Jan 19 Javascript
JavaScript 未结束的字符串常量常见解决方法
Jan 24 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
Dec 09 Javascript
JS实现网页滚动条感应鼠标变色的方法
Feb 26 Javascript
jquery实现公告翻滚效果
Feb 27 Javascript
jQuery+CSS实现简单切换菜单示例
Jul 27 Javascript
微信JS SDK接入的几点注意事项(必看篇)
Jun 23 Javascript
vue使用监听实现全选反选功能
Jul 06 Javascript
微信小程序scroll-view的滚动条设置实现
Mar 02 Javascript
前端vue如何使用高德地图
Nov 05 Javascript
微信小程序实现页面左右滑动
Nov 16 Javascript
JavaScript async/await原理及实例解析
Dec 02 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制作静态网站的模板框架(四)
2006/10/09 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
php的大小写敏感问题整理
2011/12/29 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
常用一些Javascript判断函数
2012/08/14 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
Python中zip()函数用法实例教程
2014/07/31 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
python对XML文件的操作实现代码
2020/03/27 Python
python Cartopy的基础使用详解
2020/11/01 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
联想法国官方网站:Lenovo法国
2018/10/18 全球购物
养殖行业的创业计划书
2014/01/05 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
法律专业自荐信
2014/06/03 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
综合测评自我评价
2015/03/06 职场文书
公司内部升职自荐信
2015/03/27 职场文书
感恩父母主题班会
2015/08/12 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
python实现简单石头剪刀布游戏
2021/10/24 Python
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis