getAttribute() 和 attr() 都是获取元素属性的方法,只是一种是 JS 写法,一种是 JQ 写法,但其实它们是有区别的。

主要区别

调用 getAttribute() 的主体必须是元素(Element)

getAttribute():返回属性值,是一个文本字符串
getAttributeNode("属性名"):返回属性节点,是一个对象
调用 attr() 的主体必须是对象(Object)

JS写法:getAttribute()

getAttribute() 是元素(Element)下的一种方法,因此想调用这个方法,必须确保它的调用主体是元素,否则会报错。

正确使用方式:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<div id="test" custom="hello"></div>
<script type="text/javascript">
var div = document.getElementById('test');
//获取的div是[object HTMLDivElement]
alert(div.getAttribute('custom'));
</script>
</body>
</html>
  • 错误使用方式:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<div id="test" custom="hello"></div>
<script type="text/javascript">
var div = $('#test');
//获取的div是[object Object]
alert(div.getAttribute('custom'));
</script>
</body>
</html>
  • 通过 JQ 选择器获取 div,此时的 div 是对象(Object)也就无法调用 getAttribute() 方法,浏览器(Safari)会报错如下:

TypeError: div.getAttribute is not a function. (In ‘div.getAttribute(‘custom’)’, ‘div.getAttribute’ is undefined)

JQ写法:attr()

Get the value of an attribute for the first element in the set of matched elements.

jQuery API Documentation 中对 attr() 方法——准确说是 attr( attributeName ) 方法的描述是“获取一组相匹配元素中首个元素的属性值”。 
描述中的“一组元素”应该指的是对象(Object),而不是多个元素组成的集合(HTMLCollection),因为如果方法的执行主体是集合,浏览器同样会报错:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
<div class="test" custom="hello"></div>
<div class="test" custom="hi"></div>
<script type="text/javascript">
var div = document.getElementsByClassName('test');
//获取的div是[object HTMLCollection]
alert(div.attr('custom'));
</script>
</body>
</html>
  • 正确使用方式:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
<div class="test" custom="hello"></div>
<div class="test" custom="hi"></div>
<script type="text/javascript">
var div = $('.test');
//获取的div是[object object]
alert(div.attr('custom'));
</script>
</body>
</html>

1. setAttribute(attributename,attributename) 方法添加指定的属性,并为其赋指定的值。

属性可以是自定义的属性,如果这个指定的属性已存在,则仅设置/更改值

2. getArribute(attributename);获取某个属性的值;返回值为string类型

注:attributename,value都是字符串类型

3. attributes;返回元素属性的 NamedNodeMap(返回所有属性的集合,如果通过该方法获取属性,obj.attributes['attr'])

注:Internet Explorer 8 以及更早的版本中,attributes 属性将返回元素所有可能的属性的集合,即会返回所有隐藏的属性

attributes中的属性可以通过数组的方式来获取对应的属性值

  1.  
    <input type="text" id="txtMsg" myAttr="abc" />
  2.  
    var myAttr = document.getElementById("txtMsg").attributes["myAttr"].value; //通过attributes属性
  3.  
    var myAttr = document.getElementById("txtMsg").getAttribute("myAttr"); //使用getAttribute方法
  4.  
    document.getElementById("txtMsg").setAttribute("myAttr", "newValue"); //通过setAttribute方法设置属性的值
  5.  
    var myAttr = document.getElementById("txtMsg").attributes["myAttr"].value; //通过attributes属性
  6.  
    var myAttr = document.getElementById("txtMsg").getAttribute("myAttr"); //使用getAttribute方法
     

    Python 模块(Module) 有2种导入方法—— import 和 from … import。尽管它们都是能够导入模块,但它们各自导入后的引用、调用方法却不一样。

    下面是一个简单的的模块 support.py,我们通过它来演示2种导入方法的区别:

    def print_func( par ):
    print "Hello : ", par
    return

    使用 import 引入并调用 support 模块的正确方法:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*- # 导入模块
    import support # 现在可以调用模块里包含的函数了
    support.print_func("Runoob")
    • 提示:并不能直接使用 print_func() 实现调用,必须将引入的模块名称当作一个对象,调用这个模块对象下的方法 print_func,这时才能实现调用。

    使用 from … import 模块的正确方法:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*- # 导入模块
    from support import * # 现在可以调用模块里包含的函数了
    print_func("Runoob")
    • 提示:可以直接使用 print_func() 实现调用。

    笔者建议

    一般来说,推荐使用 import 语句,避免使用 from … import,因为这样会使你的程序更加易读,也可以避免名称冲突。

 

getAttribute() 与 attr() 的区别的更多相关文章

  1. jquery里prop和attr的区别

    本文通过具体的实例来讲述jquery里prop和attr的区别及使用方法. 在jquery里,我们要获取一个标签元素的属性,可以用attr或者prop,那么两者有什么区别呢? 其实很简单: attr可 ...

  2. jquery中prop和attr的区别

    jquery中prop和attr的区别 prop: prop(name|properties|key,value|fn) **概述** 获取在匹配的元素集中的第一个元素的属性值. 随着一些内置属性的D ...

  3. jquery中的prop和attr比较区别

    近期和一同事争执prop和attr的区别,也查了很多,同事说它只是特性和固有属性的区别,但是我也查到了一些其他的,故此,来总结一下吧! 1.固有属性和特别属性 对于HTML元素本身就带有的固有属性,在 ...

  4. jQuery的prop和attr的区别,及判断复选框是否选中

    jQuery的prop和attr的区别 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 参数有区别,att ...

  5. jQuery学习之prop和attr的区别示例介绍

    1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) .prop( map ) .prop( ...

  6. jquery中prop()和attr()的区别

    相比attr,prop是1.6.1才新出来的,两者从中文意思理解,都是获取/设置属性的方法(attributes和properties).只是,window或document中使用.attr()方法在 ...

  7. 【JS】HTMLprop与attr的区别

    与prop一样attr也可以用来获取与设置元素的属性.区别在于,对于自定义属性和选中属性的处理.选中属性指的是 checked,selected 这2种属性1. 对于自定义属性 attr能够获取,pr ...

  8. prop和attr的区别

    在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于 ...

  9. jQuery学习之prop和attr的区别

    1.attr() :默认保存的是浏览器的初始值  prop()保存的是更新的值 2.下面的是首用法,但是.attr()方法可以运行在所有的attributes情况下. 注意:一些DOM元素的prope ...

随机推荐

  1. 【iOS开发】 AudioSession设置, 切换扬声器和听筒详解-保留其他应用音乐(备忘)

    本文转载至 http://blog.sina.com.cn/s/blog_693de6100101f1g8.html (2013-04-10 17:25:24) 转载▼ 标签: audiosessio ...

  2. Firefox 新增容器标签:可同时登录多个用户

    Mozilla昨天在Firefox夜间构建版50.0a1中增加了一个名为“容器标签Container Tabs”的实验性功能. Mozilla的工程师称,该功能可以将用户的浏览会话分到不同的容器中.这 ...

  3. linux安装yaf(ubuntu教程)

    $PHP_BIN/phpize 这个是什么 其实这个是一个扩展 apt-get install php5-dev 这样电脑会帮你自己配置了,很简单的下面我们就下载扩展包了http://pecl.php ...

  4. 【BZOJ2726】[SDOI2012]任务安排 斜率优化+cdq分治

    [BZOJ2726][SDOI2012]任务安排 Description 机器上有N个需要处理的任务,它们构成了一个序列.这些任务被标号为1到N,因此序列的排列为1,2,3...N.这N个任务被分成若 ...

  5. 文艺青年装B指南

        和大龄文艺青年们去凤凰的时候,很难不注意到狭窄小道旁边的文艺小店.有提供焦糖玛奇朵的咖啡店,有兜售梦露赫本明信片和烟雨 凤凰笔记本的店铺,还有复古式的静吧,常驻唱民谣小众歌曲的流浪歌手.我每看 ...

  6. Exchange Database Status(Copy Status ,Content Index State,QueueLength,Move Status...)

    Copy Status Description Mounted The active copy is online and accepting client connections. Only the ...

  7. centos7常用命令集合

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   CentOS7 常用命令集合 这两天一直在对CentOS 7.2进行初体验,各种学习命令肿么用,不过其实大多和DOS是一 ...

  8. UIScrollView 去掉下面的滚动条

        [_scrollView setShowsHorizontalScrollIndicator:NO];

  9. Python量化常用函数

    # -*- coding: utf-8 -*- # @Author: fangbei # @Date: 2017-08-26 # @Original: price_str = '30.14, 29.5 ...

  10. golang 中的定时器(timer),更巧妙的处理timeout

    今天看到kite项目中的一段代码,发现挺有意思的. // generateToken returns a JWT token string. Please see the URL for detail ...