我们从下面例子开始说起

改变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相关推荐

  1. java中properties类_Java中的Properties类详解

    1.Properties类是什么? Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常 ...

  2. java中读取properties文件内容五种方式

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...

  3. java中properties作用,java中Properties类的使用

    java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...

  4. sping配置文件中引入properties文件方式

    <!-- 用于引入 jdbc有配置文件参数 可以使用PropertyPlaceholderConfigurer 或者PropertyOverrideConfigurer --><be ...

  5. Java项目中读取properties文件,以及六种获取路径的方法

    下面1-4的内容是网上收集的相关知识,总结来说,就是如下几个知识点: 最常用读取properties文件的方法 InputStream in = getClass().getResourceAsStr ...

  6. java 多个类共用属性_java中读写Properties属性文件公用方法详解

    前言 大家都知道Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改 ...

  7. Java中的Properties类详解Properties配置文件

    1.Properties类是什么? Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常 ...

  8. 五种方式让你在java中读取properties文件内容不再是难题

    2019独角兽企业重金招聘Python工程师标准>>> 方式1.通过context:property-placeholder加载配置文件jdbc.properties中的内容 < ...

  9. mysql 读取properties_JDBC中使用Properties读取配置文件有什么用

    开发中获得连接的4个参数(驱动.URL.用户名.密码)通常都存在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可. 使用properties文件,Java中有专门用来装载配置文 ...

  10. java 遍历属性文件路径_Java项目中读取properties文件,以及六种获取路径的方法...

    Java读取properties文件的方法比较多,网上最多的文章是"Java读取properties文件的六种方法",但在Java应用中,最常用还是通过java.lang.Clas ...

最新文章

  1. 固定table标题头、标题列(兼容多种浏览器)
  2. 突发!Intel CEO 换帅,VMware CEO 将走马上任
  3. mysql导出excel命令,在命令行导出MySQL数据到excel表
  4. 30 天精通 RxJS (01):认识 RxJS
  5. spring mvc @ModelAttribute 基本类型 自定义对象解析流程
  6. 开运算和闭运算_OpenCV计算机视觉学习(5)——形态学处理(腐蚀膨胀,开闭运算,礼帽黑帽,边缘检测)...
  7. Android-i9023 Root
  8. 全网首发 PowerBI 秒级实时大屏通用解决方案
  9. 并行开发 —— 第六篇 异步编程模型
  10. NVMe闪存存储系统设计挑战
  11. 技术分享连载(六十八)
  12. 了解java虚拟机—非堆相关参数设置(4)
  13. 普通二本院校的讲师可以不做科研吗?
  14. 如何发现隐藏的Webshell后门
  15. 关于java架构心得
  16. 汇编语言浮点数指令集
  17. Keepalived之——*** WARNING - this build will not support IPVS with IPv6.解决方案
  18. activiti5.21 + SVG 绘制流程图 高亮显示已完成节点
  19. 计时器(Chronometer)的使用
  20. TCP/IP协议族 总结

热门文章

  1. Maven配置文件示例
  2. 小米忙着营销,麻烦带上技术!
  3. 芒果改进YOLOv7系列:首发改进特征融合网络BiFPN结构,融合更多有效特征
  4. 20162330 第三周 蓝墨云班课 泛型类-Bag 练习
  5. 近几年CVPR图像压缩总结
  6. 记住鲁迅的所有文章,因为他具有深远的意义,在当下意义重大。
  7. 当500万只能作为摇号的诚意金来临时,你的想法是什么?
  8. 太湖之光超级计算机诞生了,科技观察:神威·太湖之光超级计算机
  9. va_list函数学习
  10. 中央广播电视大学中等专业办公设备使用与维护