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 定义function的三种方式小结
Oct 16 Javascript
json2.js的初步学习与了解
Oct 06 Javascript
js实现jquery的offset()方法实例
Jan 10 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
Jul 15 Javascript
jquery实现ajax加载超时提示的方法
Jul 23 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 Javascript
vuejs响应用户事件(如点击事件)
Mar 14 Javascript
微信小程序 循环及嵌套循环的使用总结
Sep 26 Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
vue内置组件component--通过is属性动态渲染组件操作
Jul 28 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
1 Tube Radio
2021/03/02 无线电
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
js实现每日签到功能
2018/11/29 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
python flask中静态文件的管理方法
2018/03/20 Python
python的常见矩阵运算(小结)
2019/08/07 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
jupyter notebook实现显示行号
2020/04/13 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
如何表示python中的相对路径
2020/07/08 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
英语国培研修感言
2014/02/13 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
《实心球》教学反思
2016/02/23 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python