• 在HTML里,attribute和property有什么区别?


    在HTML中,attributeproperty 之间的区别是一个常见但容易混淆的概念。它们都与HTML元素有关,但它们在功能、用途和行为上有所不同。以下是它们之间的主要区别:

    1. 定义和来源:

      • Attribute: 它们是在HTML标记中定义的,通常用于提供配置或设置信息。例如: 中的 typevalue 就是属性。
      • Property: 一旦浏览器解析HTML并创建DOM(文档对象模型),HTML元素就会变成对象。这些对象有属性,这些属性称为属性。在JavaScript中,你可以通过DOM API访问这些属性。
    2. 类型:

      • Attribute: 它们总是字符串。即使你在HTML中为它们赋予了非字符串的值,它们也会被转换为字符串。
      • Property: 它们可以是任何类型,例如字符串、数字、布尔值、对象、数组等。
    3. 可变性:

      • Attribute: 初始值来自HTML代码,但在JavaScript中可以修改它们。
      • Property: 它们的值可以在JavaScript中随时更改,而不会影响到HTML初始化代码中的原始属性值。
    4. 同步性:

      • 对于某些HTML属性和DOM属性,它们是同步的,这意味着当你修改其中一个时,另一个也会被修改。例如,id 属性和 id 属性是同步的。
      • 但是,不是所有的属性(Attribute)和属性(Property)都是这样。例如,input 元素的 value 属性(Attribute)和 value 属性(Property)在用户与输入交互后可能会不同步。
    5. 存在性:

      • 有些HTML属性没有对应的DOM属性,反之亦然。
    6. 访问:

      • Attribute: 可以使用 getAttribute()setAttribute() 方法在JavaScript中访问和修改它们。
      • Property: 可以直接在JavaScript中通过点表示法或方括号表示法访问和修改它们,例如 element.idelement["id"]

    示例:

    考虑以下HTML代码:

    <input id="myInput" type="text" value="Hello">
    
    • 1

    在JavaScript中:

    let input = document.getElementById("myInput");
    
    // Attributes
    console.log(input.getAttribute("value")); // 输出 "Hello"
    input.setAttribute("value", "Hi");
    
    // Properties
    console.log(input.value); // 输出 "Hello",即使我们已经更改了value属性
    input.value = "Hi there";
    console.log(input.value); // 输出 "Hi there"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在上面的示例中,我们可以看到 value 属性(Attribute)和 value 属性(Property)的行为是不同的

    总之,当你在JavaScript中与HTML元素交互时,通常更推荐使用Property,因为它们提供了更丰富、更动态的交互方式。但在某些情况下,特别是当你需要获取HTML源代码中的原始值时,使用Attribute可能更有意义。

  • 相关阅读:
    构建部署_Docker常用命令
    python自动爬取,保存并运行程序。
    【2021集创赛】Arm杯三等奖:基于FPGA的人脸检测SoC设计
    在条码软件中如何制作ISBT-128条码
    【C++基础】【集成编译环境04】Visual Station 2022 项目集成【2】 Opencv 的库的项目集成和遇到的坑
    Java synchronized锁 String 和 Integer 会有什么问题?
    Rust原子类型和内存排序
    【UE】纯蓝图实现:在游戏运行时设置关键点,然后让actor沿着关键点移动
    「精品」无损批量压缩图片工具 - Caesium Image Compressor
    【docker】虚拟化和docker容器概念
  • 原文地址:https://blog.csdn.net/chencl1986/article/details/132917339