JS中attr和prop属性的区别以及优先选择示例介绍

JS中attr和prop属性的区别以及优先选择示例介绍:

在JavaScript中,使用attr和prop两个属性来操作HTML元素的属性(例如:元素的ID,name,checked等)。这两个属性的作用都是为了获取或设置HTML元素的属性,但它们之间还是有些不同的。

区别

  1. An attr可以用来读取或设置HTML属性{@lang=html}

html
<input id="my-checkbox" type="checkbox" checked />

javascript
const myCheckbox = document.getElementById('my-checkbox');
console.log(myCheckbox.getAttribute('checked')); // "checked"
myCheckbox.setAttribute('checked', false);
console.log(myCheckbox.checked); // true

这里我们首先通过getElementById()方法获取元素节点,并使用getAttribute()方法来获取元素上的"checked"属性,然后再通过setAttribute()方法将该属性设置为false。最后,我们用checked属性读取结果。

  1. A prop 可以用于读取或设置JavaScript对象属性{@lang=javascript}

javascript
const myCheckbox = document.getElementById('my-checkbox');
console.log(myCheckbox.checked); // true
myCheckbox.checked = false;
console.log(myCheckbox.getAttribute('checked')); // "checked"

在这种情况下,我们通过checked属性直接读取或设置input元素的状态,而不是通过getAttribute()和setAttribute()方法。

因此,一些重要的区别可以被总结为:

  • An attr 用于读取或设置HTML特性,而不是元素的属性。
  • A prop 用于读取或设置元素的属性,而不是HTML特性。

优先选择示例

当你需要读取或设置元素的属性时,应该始终优先选择使用prop属性。然而,在某些情况下(例如,自定义HTML5属性),您需要使用attr属性。

例如,看下面这个select元素:

<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel" selected>Opel</option>
  <option value="audi">Audi</option>
</select>

我们可以通过以下方式读取和设置该元素的属性:

const mySelect = document.querySelector('select');

console.log(mySelect.value); // "opel"
console.log(mySelect.getAttribute('value')); // "volvo"

mySelect.value = 'audi';
console.log(mySelect.value); // "audi"

mySelect.setAttribute('value', 'opel');
console.log(mySelect.value); // "opel"

从中我们发现,在这种情况下,使用prop属性可以更清晰和便捷地读取和设置元素的属性。

另一个例子是自定义data-*属性:

<div id="myDiv" data-my-property="my-value"></div>
const myDiv = document.getElementById('myDiv');

console.log(myDiv.dataset.myProperty); // "my-value"
console.log(myDiv.getAttribute('data-my-property')); // "my-value"

myDiv.dataset.myProperty = 'another-value';
console.log(myDiv.dataset.myProperty); // "another-value"

myDiv.setAttribute('data-my-property', 'new-value');
console.log(myDiv.dataset.myProperty); // "new-value"

在这种情况下,使用attr属性可以更好地操作自定义HTML5属性。

综上所述,一般情况下,你应该始终优先选择使用prop属性,因为它更快速、更直接、更清晰。但是在某些情况下,使用attr属性更合适,比如读取和设置自定义HTML5属性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中attr和prop属性的区别以及优先选择示例介绍 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 如何用JQuery计算一个字符串中的字数

    当我们需要在页面上显示一个输入框的字数时,使用JQuery可以很方便地实现。下面是计算输入框中字符数的完整攻略: 步骤1:在HTML中创建输入框 首先在HTML中创建一个输入框,可以是textarea或input标签,例如: <textarea id="myTextarea"></textarea> 步骤2:创建计…

    jquery 2023年5月12日
    00
  • jQWidgets jqxRibbon取消选择事件

    jQWidgets jqxRibbon取消选择事件 什么是jqxRibbon? jqxRibbon是jQWidgets提供的一个用户界面控件,是一种类似于Microsoft Office Ribbon风格的交互式菜单工具栏,能够帮助开发者更加方便地构建Web应用程序的用户界面。 jqxRibbon可以自定义不同的外观和行为,并支持各种功能,如选项卡、面板、快…

    jquery 2023年5月11日
    00
  • jQuery简单实现图片预加载

    针对“jQuery简单实现图片预加载”这个话题,下面是我为您准备的完整攻略: 什么是图片预加载 在网页开发中,图片预加载是一种常见技术,它的意义在于提前把需要用到的图片提前加载到浏览器中,以避免在图片使用时出现加载延迟的情况,从而增强了用户体验。 jQuery实现图片预加载的代码 下面我们可以使用 jQuery 来进行图片预加载。具体方式如下: 准备需要预加…

    jquery 2023年5月28日
    00
  • jQuery ajaxSend()方法

    jQuery的ajaxSend()方法是一种用于在AJAX请求发送之前要执行的动作。它为开发者提供了一个机会,在请求被发送到服务器时进行一些额外的处理,例如向请求添加一些参数或自定义HTTP头,以及首先显示一个loading动画等。下面将详细介绍ajaxSend()方法的完整攻略。 ajaxSend()方法的语法 ajaxSend()方法的常见语法如下所示:…

    jquery 2023年5月12日
    00
  • jQuery Easyui 验证两次密码输入是否相等

    在jQuery Easyui中,要实现验证两次密码输入是否相等可以借助validator扩展来实现。下面是详细的攻略: 第一步:引入必要资源 在HTML页面中引入jQuery、jQuery Easyui、和validator扩展的js和css代码块 <link rel="stylesheet" type="text/css…

    jquery 2023年5月27日
    00
  • jQWidgets jqxDataTable getSelection()方法

    以下是关于“jQWidgets jqxDataTable getSelection()方法”的完整攻略,包含两个示例说明: 简介 jqxDataTable件提供了 get 方法,用于获取表格中当前选中的行数据。通过使用 getSelection() 方法,我们方便地获取当前选中的行数据,以便进行后续的操作。 详细攻略 以下是 jqxDataTable 控件的…

    jquery 2023年5月11日
    00
  • jQuery 1.5 源码解读 面向中高阶JSER

    jQuery 1.5 源码解读 面向中高阶JSER攻略 简介 在本攻略中,将介绍 jQuery 1.5 的源代码结构,以及它的核心功能。本攻略适合那些中高阶的 JSER。我们将深入了解 jQuery 1.5 的源代码,了解它的运作方式,以及如何将它用于我们的项目中。 jQuery 1.5 源码结构 jQuery 1.5 的源代码结构非常清晰,由以下几个主要模…

    jquery 2023年5月27日
    00
  • jquery序列化表单去除指定元素示例代码

    当我们使用jQuery向后台提交表单数据时,经常需要对表单进行序列化。jQuery提供了方便的序列化表单的方法serialize(),但有时我们需要在序列化表单时去除某些不需要的元素,可以使用jQuery的not()方法来过滤掉指定元素。 下面是基础的jQuery序列化表单代码: $(‘form’).submit(function(e) { e.preven…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部