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 相关文章推荐
JS取文本框中最小值的简单实例
Nov 29 Javascript
javascript中style.left和offsetLeft的用法说明
Mar 07 Javascript
无刷新上传文件并返回自定义值
Jun 11 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
Sep 24 Javascript
轮播的简单实现方法
Jul 28 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
Aug 01 Javascript
用原生js做单页应用
Jan 17 Javascript
javascript实现滑动解锁功能
Mar 22 Javascript
基于React+Redux的SSR实现方法
Jul 03 Javascript
使用Jenkins部署React项目的方法步骤
Mar 11 Javascript
Vue 3.0双向绑定原理的实现方法
Oct 23 Javascript
js数组的基本使用总结
Jan 18 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
Terran热键控制
2020/03/14 星际争霸
在 PHP 中使用随机数的三个步骤
2006/10/09 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
php接口技术实例详解
2016/12/07 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
新页面打开实际尺寸的图片
2006/08/25 Javascript
fromCharCode和charCodeAt 方法
2006/12/27 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
在Python中处理时间之clock()方法的使用
2015/05/22 Python
python 全局变量的import机制介绍
2017/09/07 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
英国家用电器购物网站:Hughes
2018/02/23 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
荷兰美妆护肤品海淘网站:Beautinow(中文)
2020/11/22 全球购物
人力管理专业毕业生求职信
2014/02/27 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书