property与attirbute都是属性的意思,在JS中很容易混淆,但实际上二者有很大的区别。简单来说,

  • property:是DOM中的属性,是JavaScript中的对像
  • attribute:是HTML标签上的属性,与HTML标签上显示的属性(比如id、class、title等)一一对应

1. property

有以下代码

<input type="radio" name="" class="单选框1">

var OInput = document.getElementsByTagName('input')[0];
console.dir(OInput);

控制台上显示的结果如下:

红色方框中的各个元素就是OInput的properties,这些属性都是DOM中的内置属性,我们不能增加或删除属性,但可以查看和修改属性值。修改方式如下:

// 对象.属性名 或 对象["属性名"]
// 修改
OInput.title = "单选框";
OInput["title"] = "单选框"; // 查看
OInput.title;
OInput["title"];

细心点我们可以发现,properties没有class属性,但却有className属性;也就是说我们得通过className来查看和修改class属性值。

2. attribute

仔细观察,我们还可以发现在properties中还有一个attributes属性,把它展开如下

我们可以发现里面有三个元素,这三个元素就是HTML标签中的三个属性(attribute),这就是attriube我们可以把它看作是OInput对象的一个property。attributes中的元素都是对象,它们都有自己的属性,比如baseURI、name、nodeType、value等。查看和修改attribute的方法如下

// 查看
OInput.getAttribute('class'); // 修改和设置,添加新属性后,HTML标签会自动同步更新
OInput.setAttribute('class', '单选框'); // 等同于OInput.attribute.class.value = '单选框' // 还可以添加自定义的第三方属性 OInput.setAttribute('class1', '单选框1');
OInput.setAttribute('class1', '单选框1') // attribute中的属性名和属性值都只能是字符串(string)

3. jQuery中prop和attr方法

prop方法

prop方法对应property,attr方法对应attribute;用法如下

// 查看
$(OInput).prop('class');
$(OInput).attr('class'); // 设置
$(OInput).prop('class', '单选框');
$(OInput).attr('class', '单选框');

4. properties和attributies相同属性间的联系

一般来说,property的属性值和attribute的属性值会同步改变。比如

$(OInput).attr("class", "单选框1");
$(OInput).prop("title", "这是一个单选框");
// $(OInput).prop("class")和$(OInput).attr("title")的值也会随之改变

注意,attribute的值只能是string类型的,而property的值可以为任何类型;对于某些特殊属性,其值是非字符串类型的;比如input标签中的checked属性,此时情况会变得不一样,具体描述如下:

// OInput.checked只能是是bool类型的,即true或false
// OInput.getAttribute('checked')只能是string类型,即HTML标签上显示的是什么就是什么 // 我们依然可以在attributes中查看checked属性的bool值,可通过如下方法
OInput.attributes.checked.ownerElement.checked

JS中property与attribute的区别的更多相关文章

  1. C#中Property和Attribute的区别

    C#中Property和Attribute的区别 Attribute 字段Property 属性(get;set;) 属性的正常写: private string name; public strin ...

  2. C#中 property 与 attribute的区别?

    C#中 property 与 attribute的区别?答:attribute:自定义属性的基类;property :类中的属性

  3. DOM 中 Property 和 Attribute 的区别

    原文地址:http://web.jobbole.com/83129/ property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute: ...

  4. [转]DOM 中 Property 和 Attribute 的区别

    angular的文档: https://angular.io/guide/template-syntax#property-binding https://blog.csdn.net/sunq1982 ...

  5. JavaScript 中 Property 和 Attribute 的区别详解

    property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴. property ...

  6. DOM 中 Property 和 Attribute 的区别(转)

    property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴. property ...

  7. C#中 property 与 attribute的区别

    说的通俗些Attribute是类,不过是一类比较特殊的类,Attribute必须写在一对方括号中,用来处理.NET中多种问题:序列化.程序的安全特征等等,在.NET中的作用非同凡响 Attribute ...

  8. DOM中 property 和 attribute 详解

    被问到 property 和 attribute 的区别,想来也是要好好看一下. 一.基本概念区别 其实Attribute和Property这两个单词,翻译出来都是“属性”,<js高级程序设计& ...

  9. Property 和 Attribute 的区别(转)

    property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴. property ...

随机推荐

  1. Spark 电子书

    Spark最佳实践 (陈欢/林世飞著) 完整pdf扫描版[39MB]http://pan.baidu.com/s/1i4LNOVVSpark SQL编程指南 (Spark 官方文档翻译) 中文PDF版 ...

  2. 翻译一篇英文文章,主要是给自己看的——在ASP.NET Core Web Api中如何刷新token

    原文地址 :https://www.blinkingcaret.com/2018/05/30/refresh-tokens-in-asp-net-core-web-api/ 先申明,本人英语太菜,每次 ...

  3. rem等比例自适应手机尺寸

    方法:用sass的函数动态计算rem值 $rem : 75px;基准值 设计图是750的宽 设为$rem变量设为75,设计图是350的宽 设为$rem变量设为35,老的写法 需要用js来配合来动态改变 ...

  4. 关于 oracle10g、oracle client和plsql devement 三者之间的关系

    oracle10g是服务器,如果本机安装了oracle10g,没有必要安装oracle client,只要配置好DNS,就可以使用plsql devement连接     当然你也可以同时安装orac ...

  5. 解决Cannot change version of project facet Dynamic Web Module to 3.1

    Open web.xml from project structure http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version= ...

  6. Java第09次实验(流与文件)

    第一次实验 0. 字节流与二进制文件 1.使用DataOutputStream与FileOutputStream将Student对象写入二进制文件student.data 二进制文件与文本文件的区别 ...

  7. java栈和队列

    栈    可变长数组实现    链表实现    数组与链表的对比队列    链表实现 栈 下压栈(简称栈)是一种基于后进后出(LIFO)策略的集合类型.这里学习分别用数组和链表这两种基础数据结构来实现 ...

  8. linux 中文乱码解决办法

    就是从数据库中取出来时,在存入linux的文件里时,在字符流时制定编码格式.代码如下: FileOutputStream fos=new FileOutputStream(new File(fileP ...

  9. jquery 四舍五入小数处理总结

    一.jquery中对小数进行取整.四舍五入的方法 1.丢弃小数部分,保留整数部分 parseInt(5/2) =2 2.四舍五入. Math.round(5/2) =3 3.向下取整 Math.flo ...

  10. 编写个shell脚本将/home/test 目录下大于10K的文件转移到/tmp目录下

    #!/bin/sh cd /home/test for i in `ls -l |awk '{if($5>10240) {print $9}}'` do mv $i /tmp done