html调用properties,聊聊html中的properties和attributes
我们从下面例子开始说起
改变attribute
改变props
const attrBtn = document.querySelector('.attr-btn')
const propsBtn = document.querySelector('.props-btn')
attBtn.addEventListener('click', e => {
inputEl.setAttribute('value', 'attribute')
})
propsBtn.addEventListener('click', e => {
inputEl.value = 'props'
})
复制代码
3个问题,
点击改变attribute按钮,输入框显示的value是?
点击改变props按钮,输入框显示的value是?
再次点击改变attribute按钮,输入框显示的value是?
同学们可以先思考2分钟,然后再往下看…...
正确答案是:attribute、props、props
如果你的3个答案都完全正确,你可以点击右上角的X了,因为下面的话题估计不能给你带来帮助的。如果你的答案没有完全正确,那么我们继续往下看:
当我们在书写html代码的时候,我们可以给html元素添加attribute,比如上面的中我们添加了id、type和value3个attribute。浏览器在编译完html后,会将input元素转换成一个dom节点对象,该对象就是代码中的inputEl。该对象包含了一系列的属性,例如:accept、alt、baseURI、className、attributes等等。
对于一个给定的dom节点对象,properties指的是这个节点对象所拥有的所有属性,attributes指的是该节点对象的attributes属性中的所有属性。
听着有点绕,回到上面的例子中,
该input节点对象包含着id、type、value、attributes的props,当然还有很多其他的props,其中:
id反映的是attributes中的id属性,并且两者是“完全相同”的映射,即:attribute中的id属性改变了,input节点对象中的id属性也将同步改变,反之亦然;
type反映的是attributes中的type属性,但是由于input节点对象中的type属性只可能是一些固定的值,如果你设置,此时theInput.getAttribute('type')的输出结果为foo,但theInput.type的输出结果为text(因为默认值是text啊)
value比较特殊,它反映的是当前输入框中的文本值,初始时input节点对象中的value属性等于attributes中的value属性,用户改变输入框中的文本值本质改的就是input节点对象中的value属性,attributes中的value属性并不会同步变化。需要特别注意的是若没有修改过theInput.value,则默认情况下theInput.value将跟theInput.getAttribute('value')保持同步,一旦修改过theInput.value,则该层同步关系即被打破,attribtue的更新将不会影响theInput.value。反之,theInput.value的改动任何时候都不会对theInput.getAttribute('value')有任何影响!
除了上面的几个属性外,还有一个特殊的defaultValue属性,该属性反映的就是attributes中的value属性,并且跟id一样也是“完全相同”的映射。
最后我们看下开篇的3个问题,
首次点击改变attribute按钮,inputEl的attributes中的value属性被设置为attribute,由于之前并没有修改过inputEl.value的值,此时inputEl.value将同步更新为attribtue,此时文本框内容显示props;
然后点击改变props按钮,此时inputEl.value被修改props,所以此时文本框内容显示props;
再次点击改变attribute按钮,inputEl的attributes中的value属性被设置为attribute,由于在第二步中已经修改过inputEl.value的值,inputEl.getAttribute('value')和inputEl.value的同步关系被打破,此时inputEl.value的值将保持不变。
其实只是很基础的一些东西,但如果不求甚解的话可能很容易忽略“基础背后的真相”,只有将基础打得足够的牢实,才能在实际的开发中少给自己和他人挖坑~
第一次正儿八经的写博客,这么简单的一些东西硬是花了我一个半小时来组织语言o(╯□╰)o,也不确定自己是否完全讲解清楚并且正确,如果写的东西能带给你帮助,还烦请不要吝啬你的赞,O(∩_∩)O谢谢~~新的一年,打算养成每周至少一篇博客的习惯,共勉!!
html调用properties,聊聊html中的properties和attributes相关推荐
- java中properties类_Java中的Properties类详解
1.Properties类是什么? Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常 ...
- java中读取properties文件内容五种方式
一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...
- java中properties作用,java中Properties类的使用
java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...
- sping配置文件中引入properties文件方式
<!-- 用于引入 jdbc有配置文件参数 可以使用PropertyPlaceholderConfigurer 或者PropertyOverrideConfigurer --><be ...
- Java项目中读取properties文件,以及六种获取路径的方法
下面1-4的内容是网上收集的相关知识,总结来说,就是如下几个知识点: 最常用读取properties文件的方法 InputStream in = getClass().getResourceAsStr ...
- java 多个类共用属性_java中读写Properties属性文件公用方法详解
前言 大家都知道Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改 ...
- Java中的Properties类详解Properties配置文件
1.Properties类是什么? Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常 ...
- 五种方式让你在java中读取properties文件内容不再是难题
2019独角兽企业重金招聘Python工程师标准>>> 方式1.通过context:property-placeholder加载配置文件jdbc.properties中的内容 < ...
- mysql 读取properties_JDBC中使用Properties读取配置文件有什么用
开发中获得连接的4个参数(驱动.URL.用户名.密码)通常都存在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可. 使用properties文件,Java中有专门用来装载配置文 ...
- java 遍历属性文件路径_Java项目中读取properties文件,以及六种获取路径的方法...
Java读取properties文件的方法比较多,网上最多的文章是"Java读取properties文件的六种方法",但在Java应用中,最常用还是通过java.lang.Clas ...
最新文章
- 固定table标题头、标题列(兼容多种浏览器)
- 突发!Intel CEO 换帅,VMware CEO 将走马上任
- mysql导出excel命令,在命令行导出MySQL数据到excel表
- 30 天精通 RxJS (01):认识 RxJS
- spring mvc @ModelAttribute 基本类型 自定义对象解析流程
- 开运算和闭运算_OpenCV计算机视觉学习(5)——形态学处理(腐蚀膨胀,开闭运算,礼帽黑帽,边缘检测)...
- Android-i9023 Root
- 全网首发 PowerBI 秒级实时大屏通用解决方案
- 并行开发 —— 第六篇 异步编程模型
- NVMe闪存存储系统设计挑战
- 技术分享连载(六十八)
- 了解java虚拟机—非堆相关参数设置(4)
- 普通二本院校的讲师可以不做科研吗?
- 如何发现隐藏的Webshell后门
- 关于java架构心得
- 汇编语言浮点数指令集
- Keepalived之——*** WARNING - this build will not support IPVS with IPv6.解决方案
- activiti5.21 + SVG 绘制流程图 高亮显示已完成节点
- 计时器(Chronometer)的使用
- TCP/IP协议族 总结