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 相关文章推荐
通过event对象的fromElement属性解决热区设置主实体的一个bug
Dec 22 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
Nov 03 Javascript
js简单实现点击左右运动的方法
Apr 10 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
JavaScript  cookie 跨域访问之广告推广
Apr 20 Javascript
jquery实现左右滑动式轮播图
Mar 02 Javascript
JS实现页面打印(整体、局部)
Aug 18 Javascript
对Angular中单向数据流的深入理解
Mar 31 Javascript
webstrom Debug 调试vue项目的方法步骤
Jul 17 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
Jun 19 jQuery
Vant 中的Toast设置全局的延迟时间操作
Nov 04 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
Dec 10 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-fpm的配置详解
2013/06/03 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
2017/05/25 jQuery
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
Python中isnumeric()方法的使用简介
2015/05/19 Python
有趣的python小程序分享
2017/12/05 Python
Python 将pdf转成图片的方法
2018/04/23 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
本科毕业生自我鉴定
2013/11/02 职场文书
求职教师自荐书
2014/06/19 职场文书
科学发展观演讲稿
2014/09/11 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
swagger如何返回map字段注释
2021/07/03 Java/Android
Windows7下FTP搭建图文教程
2022/08/05 Servers