js中元素属性的获取

方式一: element.attribute

方式二:element.getAttribute("attribute");

方式三:element.className;

一:前言

因为以前看过一篇张鑫旭的博客,记得里边有提到getAttribute的兼容性问题,但是具体的又想不起来,就自己先测试一下,但是的但是,巧合就这么简单,小女子我使用的是元素的class属性,然后不知觉地就掉入大坑了。

测试的结果是ele.getAttribute("class")在IE7(含)以下的版本中弹出的是null,以为是个兼容问题,在网上找了一天的解决方法,最后是在没有办法,就又将张鑫旭的那篇文章看了一遍,看到最后,内伤无数啊,里边提到的getAttribute跟DOM中的这个完全不是一回事儿的,当时没看懂,想着以后学到DOM的时候再看,结果的结果……哦啊……算了,不说了

二:以上三种方式的区别

都在代码中,自己看吧……

HTML:

<!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>

</body>
</html>

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 -> null

    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 

       /*总结:
    1:常规属性建议使用 node.XXXX。
    2:自定义属性建议使用node.getAttribute("XXXX")。
    3:当获取的目标是JS里的关键字时建议使用node.getAttribute("XXX"),如label中的for。
    4:当获取的目标是保留字,如:class,请使用className代替。
    */

这个总结也非本人成果,但是中间有个小小的错误,已改;

为表达对原著者的尊重,下边是链接:

http://kingwell-leng.iteye.com/blog/1663553

时间: 2024-10-10 22:47:31

js中元素属性的获取的相关文章

js中元素属性值的获取

一.样式表的三种方式 1.内嵌样式(inline style):是写在tag标签当中的,用style=“”来表示,只对当前标签生效: 2.内部样式(inner style sheet):是写在HTML中的,一般写在head标签中,对所在的网页有效 3.外部样式表(Extend style sheet):写在单独文件,需要用link标签单独引入,可对多个网页生效 二.获取style样式属性 1.在js中,通过document.getElementById("id").style.xxx就

JS中style属性

JS中style属性现在我需要对这个标签赋值,其内容为: 1.需要显示的字为"HELLO WORLD": 2.span的 background-color : red ,另外还要:border:1px solid #333333;cursor:hand; 我需要在<script></script>内把他们赋值,请问怎么写呢?难道要: document.getElementById("a").style.background="red

关于JS(原生js+jq)中获取、设置或者删除元素属性和获取元素值

一.JS获取.设置或者删除元素属性 原生js: $("要获取属性class/id名").getAttribute("属性"); $("要设置属性class/id名").setAttribute("属性","属性值"); $("要删除属性class/id名").removeAttribute("属性"); jq: $("要获取属性class/id名"

js中元素(图片)切换和隐藏显示问题

这个知识点其实也简单,(当然是在理清思路的情况下),在没预习的情况下听的还真是艰难,上课以来唯一的一次懵逼了一天,感觉乱乱的,全是新属性,所以今晚的我破天荒的熬夜敲代码,一定要弄懂! 现在就来梳理下头绪: 1.body里面的元素或者图片先构建好,在我们需要对其进行加一些特效的时候,这时候我们就需要用到js中的DOM对象模型: 先获取页面上需要加特效的元素,这里有三种方式,分别是:id(document.getElementById() )  标签 (  document.getElementBy

js对元素属性.内容的操作。定时器。元素的平级,父级,子集关系。

JS对元素内容的操作: 1.操作样式(style) 2.操作属性(Attribute) 3.操作内容(innerHtml/Text) 一.操作元素属性 常见属性:class.id.style.disabled. 自定义属性:可以自定义一个任意属性名称,可以任意放值,不会对所在元素本身有任何作用. this:代表所在最近的一个方法. 设置一个属性:a.setAttribute("属性名称","属性值");[不存在该属性名称时,创建这个属性,并赋值.当存在该属性名称时,

2017-3-31 js对元素属性.内容的操作。定时器。元素的平级,父级,子集关系。

JS对元素内容的操作: 1.操作样式(style) 2.操作属性(Attribute) 3.操作内容(innerHtml/Text) 一.操作元素属性 常见属性:class.id.style.disabled. 自定义属性:可以自定义一个任意属性名称,可以任意放值,不会对所在元素本身有任何作用. this:代表所在最近的一个方法. 设置一个属性:a.setAttribute("属性名称","属性值");[不存在该属性名称时,创建这个属性,并赋值.当存在该属性名称时,

js中的children实时获取子元素

先看下面一个小例子的结果 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> ul,li{list-style:none;} </style> </head> <body> <div id="wrap&

js中常用属性备忘

. onsubmit一般用来做验证的,用来控制表单提交的. 之前使用数据提交基本上使用ajax做数据提交,在数据验证的时候,只有通过数据验证之后,才会post/get数据到对应api文件,但是这次涉及图片上传,只能使用form表单提交,但是这前台js判断的时候出现问题.就是在js验证之后,form表单自动提交. 如何防止表单自动提交? <form name="form1" onsubmit="return check()" method="post&

js中Prototype属性解释及常用方法

1.prototype的定义 javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用. 每一个构造函数都有一个属性叫做原型.这个属性非常有用:为一个特定类声明通用的变量或者函数. 你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在.你可以看看下面的例子: function Test(){} alert(Test.prototype); // 输出 "Object" 1.