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 相关文章推荐
window.parent调用父框架时 ie跟火狐不兼容问题
Jul 30 Javascript
jquery $.each()使用探讨
Sep 23 Javascript
js call方法详细介绍(js 的继承)
Nov 18 Javascript
基于编写jQuery的无缝滚动插件
Aug 02 Javascript
浅谈类似于(function(){}).call()的js语句
Mar 30 Javascript
JavaScript的ExtJS框架中表格的编写教程
May 21 Javascript
利用vue.js插入dom节点的方法
Mar 15 Javascript
angular2 ng build部署后base文件路径问题详细解答
Jul 15 Javascript
简单的Vue SSR的示例代码
Jan 12 Javascript
React key值的作用和使用详解
Aug 23 Javascript
js实现带有动画的返回顶部
Aug 09 Javascript
JSON stringify方法原理及实例解析
Oct 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 pack与unpack 摸板字符字符含义
2009/10/29 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
php创建sprite
2014/02/11 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
Vue3 中的数据侦测的实现
2019/10/09 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
Python同步遍历多个列表的示例
2019/02/19 Python
python爬取内容存入Excel实例
2019/02/20 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
python 模块导入问题汇总
2021/02/01 Python
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
一套PHP的笔试题
2013/05/31 面试题
高三语文教学反思
2014/01/15 职场文书
联片教研活动总结
2014/07/01 职场文书
财务务虚会发言材料
2014/10/20 职场文书
总账会计岗位职责
2015/04/02 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技