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. BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (Burnside引理、组合计数)

    题目链接 (Luogu) https://www.luogu.org/problem/P4727 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.ph ...

  2. STCubeMX软件新建Keil和IAR工程使用步骤:

    STCubeMX软件新建Keil和IAR工程使用步骤:首先是软件下载(也可在我们的百度云下载):1.STCubeMX下载地址:    http://www.stmicroelectronics.co ...

  3. Zookeeper入门(五)之Linux环境下Zookeeper安装

    本文参考地址为:http://www.mamicode.com/info-detail-2243059.html1.安装wget http://archive.apache.org/dist/zook ...

  4. 2019新的开始,新的规划,庆祝CSDN访问量过千

    刚刚看了下博客访问量六千八百七十多个,然后我就自己刷新了一下,留个截图做纪念吧. 每一年都会有很多计划,然而到了年末却发现,未完成的还剩一大半,而完成的却屈指可数. 不过该立的flag还是要立的,顺便 ...

  5. 自动化部署脚本--linux执行sh脚本

    自动化部署脚本文件目录: 运行主程序:./install.sh #!/bin/bash SCRIPTPATH=$(cd "$(dirname "$0")"; p ...

  6. centos文件实时同步inotify+rsync

    我的应用场景是重要文件备份 端口:873,备份端打开即可 下载地址:https://rsync.samba.org/ftp/rsync/src/ 服务端和客户端要保持版本一致 网盘链接:https:/ ...

  7. vue.js父子组件通信动态绑定

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. Oracle Rac 测试

      #还是使用之前的脚步来进行测试 #Author : Kconnie Pong Oracle@PONGDB:~> more load_balance.sh #!/bin/bash ..} do ...

  9. eclipse subclipse svn 插件安装使用

    一.在线安装 1.打开Eclipse,菜单栏中选择"Help"->"Install New SoftWare..." 2.在弹出的对话框中,点击" ...

  10. Selenium 2自动化测试实战1(1-2章节重点笔记)

    1.黑盒测试 黑盒测试,指的是把被测的软件看做一个黑盒子,不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果. 2.白盒测试白盒测试,指的是把盒子打开,去研究里面的源代码和程序执行结果 ...