input 元素 value 与 setAttribute() 的区别

2024-02-15 01:32

本文主要是介绍input 元素 value 与 setAttribute() 的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原理图

请先看图再结合例子记忆

案例:

根据上图我们从上往下依次给出案例验证。

html:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><input id="test" value="123"/></body>
</html>

问题1:打印dom的值来自谁?

案例

1.1 修改value

<script>let dom = document.getElementById("test");console.log("******修改前******");console.log(dom);console.log("******修改后******");dom.value = 456;console.log(dom);
</script>

1.2 修改attribute

		<script>let dom = document.getElementById("test");console.log("******修改前******");console.log(dom);console.log("******修改后******");dom.setAttribute("value", 456);console.log(dom);</script>

总结

修改value并不能影响dom,修改attribute会影响dom。

问题2:value的值来自谁?

案例

		<script>let dom = document.getElementById("test");console.log(dom.value);dom.setAttribute("value", 456);console.log(dom.value);</script>

根据问题1:可以直接dom的值也是来自attribute,测试结果value的值是随着attribute变化而变化的,所以value的值来自attribute。下面我们来验证缓存逻辑。

		<script>let dom = document.getElementById("test");console.log(dom.value);dom.setAttribute("value", 456);console.log(dom.value);dom.value="test"dom.setAttribute("value", 789);console.log(dom.value);console.log(dom.getAttribute("value"));</script>

发现当value被赋值以后就不再受attribute的影响,并且value的值并不会写入到attribute,进而也不会影响dom。

问题3:input显然的值来自谁?

2.1 修改value

		<script>let dom = document.getElementById("test");dom.value = 456;</script>

2.2 修改attribute

		<script>let dom = document.getElementById("test");dom.setAttribute("value", 456);</script>

2.3 线修改attribute再修改value

		<script>let dom = document.getElementById("test");dom.setAttribute("value", 456);dom.value="789"console.log(dom)</script>

首先根据问题2缓存案例我们可以得知,attribute的值并不受value的影响,有根据问题1可知dom的值来自attribute,因此dom的打印是456,此时input渲染的是456,因此input值来自value,2.2只所以跟着attribute变,根据问题2得知,因为value没有缓存时取值来自attribute,受attribute影响。

这篇关于input 元素 value 与 setAttribute() 的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/710104

相关文章

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

C# 委托中 Invoke/BeginInvoke/EndInvoke和DynamicInvoke 方法的区别和联系

《C#委托中Invoke/BeginInvoke/EndInvoke和DynamicInvoke方法的区别和联系》在C#中,委托(Delegate)提供了多种调用方式,包括Invoke、Begi... 目录前言一、 Invoke方法1. 定义2. 特点3. 示例代码二、 BeginInvoke 和 EndI

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

在Dockerfile中copy和add的区别及说明

《在Dockerfile中copy和add的区别及说明》COPY和ADD都是Dockerfile中用于文件复制的命令,但COPY仅用于本地文件或目录的复制,不支持自动解压缩;而ADD除了复制本地文件或... 目录在dockerfile中,copy 和 add有什么区别?COPY 命令ADD 命令总结在Doc

解读Pandas和Polars的区别及说明

《解读Pandas和Polars的区别及说明》Pandas和Polars是Python中用于数据处理的两个库,Pandas适用于中小规模数据的快速原型开发和复杂数据操作,而Polars则专注于高效数据... 目录Pandas vs Polars 对比表使用场景对比Pandas 的使用场景Polars 的使用

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php