getAttribute() 与 attr() 的区别
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中的属性可以通过数组的方式来获取对应的属性值
- <input type="text" id="txtMsg" myAttr="abc" />
- var myAttr = document.getElementById("txtMsg").attributes["myAttr"].value; //通过attributes属性
- var myAttr = document.getElementById("txtMsg").getAttribute("myAttr"); //使用getAttribute方法
- document.getElementById("txtMsg").setAttribute("myAttr", "newValue"); //通过setAttribute方法设置属性的值
- var myAttr = document.getElementById("txtMsg").attributes["myAttr"].value; //通过attributes属性
- 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() 的区别的更多相关文章
- jquery里prop和attr的区别
本文通过具体的实例来讲述jquery里prop和attr的区别及使用方法. 在jquery里,我们要获取一个标签元素的属性,可以用attr或者prop,那么两者有什么区别呢? 其实很简单: attr可 ...
- jquery中prop和attr的区别
jquery中prop和attr的区别 prop: prop(name|properties|key,value|fn) **概述** 获取在匹配的元素集中的第一个元素的属性值. 随着一些内置属性的D ...
- jquery中的prop和attr比较区别
近期和一同事争执prop和attr的区别,也查了很多,同事说它只是特性和固有属性的区别,但是我也查到了一些其他的,故此,来总结一下吧! 1.固有属性和特别属性 对于HTML元素本身就带有的固有属性,在 ...
- jQuery的prop和attr的区别,及判断复选框是否选中
jQuery的prop和attr的区别 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 参数有区别,att ...
- jQuery学习之prop和attr的区别示例介绍
1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) .prop( map ) .prop( ...
- jquery中prop()和attr()的区别
相比attr,prop是1.6.1才新出来的,两者从中文意思理解,都是获取/设置属性的方法(attributes和properties).只是,window或document中使用.attr()方法在 ...
- 【JS】HTMLprop与attr的区别
与prop一样attr也可以用来获取与设置元素的属性.区别在于,对于自定义属性和选中属性的处理.选中属性指的是 checked,selected 这2种属性1. 对于自定义属性 attr能够获取,pr ...
- prop和attr的区别
在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于 ...
- jQuery学习之prop和attr的区别
1.attr() :默认保存的是浏览器的初始值 prop()保存的是更新的值 2.下面的是首用法,但是.attr()方法可以运行在所有的attributes情况下. 注意:一些DOM元素的prope ...
随机推荐
- Android测试:从零开始3—— Instrumented单元测试1
Instrumented单元测试是指运行在物理机器或者模拟机上的测试,这样可以使用Android framework 的API和supporting API.这会在你需要使用设备信息,如app的Con ...
- LeetCode-Water and Jug Problem
You are given two jugs with capacities x and y litres. There is an infinite amount of water supply a ...
- ES6数组相关
ES6数组新增的几个方法: 1. forEach() //forEach()遍历数组,无返回值,不改变原数组 var arr=[1,2,3,4] arr.forEach((item,index,arr ...
- js 中 this 的指向问题
高程上的大前提: 1.this 对象是在运行时基于函数的执行环境绑定的:在全局函数中,this 等于window,而当函数被作为某个对象的方法调用时,this 等于那个对象:不过,匿名函数的执行环境具 ...
- java项目中初期常见的错误及解决方案
在做项目的初期,想必总会有各种奇奇葩葩的错误出现,本博文主要整理了博主在项目初期遇到的错误,希望能为大家减少犯这些错误 1.Env 名字写错了,图片中错误类型是名字没有发现的异常,因此需要检查后面报错 ...
- 操作数组可以通过Array这个类来操作(不需要考虑数组的类型!!!)
这段代码通过Array这个类,把值取出来,存到collection里,不需要考虑数组的类型
- 关于Springboot 中注入多个cacheManage 时候 存在报错
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'e ...
- 关于HashSet在 java7 与 java8的不同
作者:RednaxelaFX链接:https://www.zhihu.com/question/28414001/answer/40733996来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...
- 有些有IP的项目,公司不至于测试不行砍项目,但是会砍项目组,把IP收回交给别的团队做(因为一旦一测数据太差,公司(投资人)会判断在二测的时候数据能提升到什么样。说白了就是历史信用问题)
作者:匿名用户链接:https://www.zhihu.com/question/309778033/answer/579761064来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- golang 中的定时器(timer),更巧妙的处理timeout
今天看到kite项目中的一段代码,发现挺有意思的. // generateToken returns a JWT token string. Please see the URL for detail ...