JS中property与attribute的区别
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的区别的更多相关文章
- C#中Property和Attribute的区别
C#中Property和Attribute的区别 Attribute 字段Property 属性(get;set;) 属性的正常写: private string name; public strin ...
- C#中 property 与 attribute的区别?
C#中 property 与 attribute的区别?答:attribute:自定义属性的基类;property :类中的属性
- DOM 中 Property 和 Attribute 的区别
原文地址:http://web.jobbole.com/83129/ property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute: ...
- [转]DOM 中 Property 和 Attribute 的区别
angular的文档: https://angular.io/guide/template-syntax#property-binding https://blog.csdn.net/sunq1982 ...
- JavaScript 中 Property 和 Attribute 的区别详解
property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴. property ...
- DOM 中 Property 和 Attribute 的区别(转)
property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴. property ...
- C#中 property 与 attribute的区别
说的通俗些Attribute是类,不过是一类比较特殊的类,Attribute必须写在一对方括号中,用来处理.NET中多种问题:序列化.程序的安全特征等等,在.NET中的作用非同凡响 Attribute ...
- DOM中 property 和 attribute 详解
被问到 property 和 attribute 的区别,想来也是要好好看一下. 一.基本概念区别 其实Attribute和Property这两个单词,翻译出来都是“属性”,<js高级程序设计& ...
- Property 和 Attribute 的区别(转)
property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴. property ...
随机推荐
- HGOI20190706 题解
Problem A 质因数 设f(x) 表示x的不同质因子个数,给出T组x,询问f(x)的值. 对于100%的数据 $x,T \leq 10^5 $ Sol : 第一遍欧拉筛,并记录下每个数的最小质因 ...
- centos 6.8安装mysql5.6
安装mysql 官方文档 A Quick Guide to Using the MySQL Yum Repository 下载 Yum Repository Go to the Download My ...
- 配置zookeeper开机自启动
第一种.修改vim /etc/rc.local文件 vim /etc/rc.local 加入: export JAVA_HOME=/usr/local/JAVA/ --JDK安装路径/data/zoo ...
- idea 下运行安卓项目
修改 gralde 路径修改安卓sdk路径进入project structure 设置 Project settings / Project /project SDK 选择 Android API 2 ...
- mongo 是什么
一.概述1.MongoDB是什么?用一句话总结MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统.没错MongoDB就是数据库,是NoSQL类型的数据库 2.为什么要使用Mong ...
- cgo
package main import ( "unsafe" "fmt") /*#cgo CFLAGS: -I./#cgo LDFLAGS: -L./#incl ...
- 20175215 2018-2019-2 第八周java课程学习总结
第十五章 泛型与几何框架 15.1 泛型 泛型(Generics)是在JDK1.5中推出的,其主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据结构. 15.1.1 泛型类声明 可以使用 ...
- 【python】小型神经网络的搭建
import numpy as np def sigmoid(x): # Sigmoid activation function: f(x) = 1 / (1 + e^(-x)) return 1 / ...
- MySQL查看数据表的创建时间和最后修改时间
如何MySQL中一个数据表的创建时间和最后修改时间呢? 可以通过查询information_schema.TABLES 表得到信息. 例如 mysql> SELECT * FROM `infor ...
- Emacs Python 自动补全之 jedi
jedi jedi 的安装配置并不是很友好.github 上也没有明确说明.查了很多资料, 最后才配置成功.可是效果却不是很理想.在补全的时候有明显的卡顿现象. 不知道网上这么多人对其推崇备至是因为什 ...