attr 和 prop的区别

  要想弄清楚attr和prop的区别,就要先搞清楚js中使用DOM方法获取设置属性和使用对象方法获取设置属性的区别。

  在javascript中使用DOM方法设置获取属性值主要是依靠setAttribute和getAttribbute,而使用对象方法获取属性值主要是靠节点对象.属性名称。

  那么这两种方法有什么不同?

  1.  获取属性值

  假设有这样的html代码:

  <div id = ‘id_div‘ class = ‘class-div‘ a = ‘aaa‘>

  那么首先使用getAttribute进行测试:

var div = document.getElementById(‘id_div‘);
console.log(div.getAttribute(‘id‘));      结果是id_div
console.log(div.getAttribute(‘class‘));    结果是class-div        
console.log(div.getAttribute(‘a‘));      结果是aaa

  可见使用getAttribute,节点的固有属性和自定义属性都可以获取。

  接下来使用对象方法进行测试:

var div = document.getElementById(‘id_div‘);
console.log(div.id);        结果是id_div
console.log(div.className);    结果是class-div
console.log(div.a);         结果是undefined

  由此可见使用对象方法获取属性值的话,如果是节点的固有属性那么是可以获取到的,但是如果是自定义的属性,那么这样是获取不到的。

  2.  设置属性值

  首先使用setAttribute设置属性值。

var div = document.getElementById(‘id_div‘);
div.setAttribute(‘class‘,‘bbb‘);
console.log(div.getAttribute(‘class‘));    bbb
console.log(div.className);           bbb

  这短代码是用setAttribute设置了固有属性class的值,用两种方法获取class的值。结果是两者都能够获取到。

var div = document.getElementById(‘id_div‘);
div.setAttribute(‘b‘,‘bbb‘);
console.log(div.getAttribute(‘b‘));    bbb
console.log(div.b);              undefined

  这段代码是用setAttribute设置了一个自定义属性的值,结果显示使用对象方法不能够获取到属性的值。另外在html文档的结构中,我们也可以看到,属性b也出现在了html文档中。

  然后我们使用对象方法设置属性值。

var div = document.getElementById(‘id_div‘);
div.className = ‘bbb‘;
console.log(div.getAttribute(‘class‘));      bbb
console.log(div.className);             bbb

  结果是二者都是一样的结果。

var div = document.getElementById(‘id_div‘);
div.b = ‘bbb‘;
console.log(div.getAttribute(‘b‘));        null
console.log(div.b);                 bbb

  而对于使用对象方法设置属性值,此时使用DOM方法获取的值为null,而使用对象方法成功获取到bbb。看一下html文档,发现属性b并没有出现在html文档中。

  最后我们在实验一下这样的代码

var div = document.getElementById(‘id_div‘);
div.b = ‘bbb‘;
div.setAttribute(‘b‘,‘aaa‘);
console.log(div.getAttribute(‘b‘));        aaa
console.log(div.b);                  bbb

  这段代码,我们分别都使用两种方法对一个自定义属性进行设置。结果显示,用两种方法获取的结果并不相同。

var div = document.getElementById(‘id_div‘);
div.className = ‘bbb‘;
div.setAttribute(‘class‘,‘aaa‘);          
console.log(div.getAttribute(‘class‘));      aaa
console.log(div.className);             aaa

  这段代码我们是用两种方法分别对固有属性class设置了不同的值,但是结果却显示的是最后修改的值。说明二者都影响了class。

  之所以要区分这二者的区别,是因为,attr使用的就是DOM方法操作属性,而prop使用的是对象方法操作属性。因此也可知道二者的区别就是:attr对固有属性和自定义属性均可操作,而prop只能对固有属性进行操作(事实上也可以对自定义属性进行操作,但是自定义属性不能够影响到html文档)。因此当对固有属性进行操作的时候就是用prop,而对自定义属性进行操作的时候就用attr。

  而对input 的checked,selected,disabled属性,由于prop使用的是布尔值进行操作,因此更加方便,所以这种情况,一般使用prop。

时间: 2024-08-24 01:26:26

attr 和 prop的区别的相关文章

JQuery中Attr与Prop的区别

今天做一个用jquery控制input checkbox的选中和不选中赋值,开始attr一直出现莫名其妙的问题,首次能赋值,之后每次点击完全没效果.后面改用prop来做,功能正常. 以下介绍attr与prop的区别: 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 参考文章:http://www.cnblogs.com/Showshare/p/different-between-attr-and-pro

jquery中attr和prop的区别分析

这篇文章主要介绍了jquery中attr和prop的区别分析的相关资料,需要的朋友可以参考下 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很多.这里谈谈我的心得,我的心得很简单: • 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. • 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 上面的描述也许有点模糊,举几个例子就知道了. 复制代码代

【JAVAWEB学习笔记】21_多条件查询、attr和prop的区别和分页的实现

今天主要学习了数据库的多条件查询.attr和prop的区别和分页的实现 一.实现多条件查询 public List<Product> findProductListByCondition(Condition condition) throws SQLException { QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource()); //定义一个存储实际参数的容器 List<String> list =

Jquery学习笔记(6)--jquery中attr和prop的区别【精辟】

jquery中attr和prop的区别 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很多.这里谈谈我的心得,我的心得很简单: 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 上面的描述也许有点模糊,举几个例子就知道了. <a href="http://www.baidu.com&quo

jquery中attr和prop的区别(转)

在网络上看到这样一篇关于jquery中attr和prop的区别文章,觉得不错,所以转载了,一下为原文引用: 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很多.这里谈谈我的心得,我的心得很简单: 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 上面的描述也许有点模糊,举几个例子就知道了. <a

【jQuery 区别】attr()和prop()的区别

1>>> 今天实现一个 点击更新按钮 ,可以勾选上本行的的checkbox的功能: 使用代码: 1 /** 2 * updateproduct.htmls 更新 产品信息 3 */ 4 $(document).on("click",".table-bordered tbody tr a[class='up']",function(){ 5 product = $.parseJSON( $(this).parents('tr').find("

Jquery中attr和prop的区别

jQuery之prop和attr的区别 1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) .prop( map ) .prop( propertyName, function(index, oldPropertyValue) ) 给匹配元素集合设定一个或多个属性 .prop()和 .attr()区别 下面是关于jQuery1.6和1.6.1中Attributes模块变化的描述,以及.at

jQuery学习笔记(四):attr()与prop()的区别

这一节针对attr()与prop()之间的区别进行学习. 先看看官方文档是如何解释两者之间功能差异的: attr() Get the value of an attribute for the first element in the set of matched elements or set one or more attributes for every matched element.获取匹配的元素集合中第一个元素的attribute,或者为每个选定的元素添加一个至多个attribute

jQuery函数attr()和prop()的区别

[自己总结,详情见下面转录的文章]: attr()用于操作html属性,prop()属性用于操作DOM属性 ①: 很多情况下可以互用 ②:attr()独自适用的情况,自定义的html属性,html属性和dom属性不同名的情况,如具有同一个值的属性:class(html),className(DOM) ③:prop()独自适用的情况,html属性和dom属性不同名时,表单中的checked,selected,disabled等属性 以下转自    http://www.365mini.com/pa