JS修改元素屬性的全面指南

一、JS修改元素屬性的方法

修改元素屬性是 web 開發過程中經常遇到的需求,而 JavaScript 作為前端三劍客之一,其重要性不言自明。下面介紹如何使用 JavaScript 去修改元素屬性,方法主要有三種。

方法一:使用 DOM API 的屬性更新方法

使用 DOM API 的屬性更新方法是一種非常直觀、易用的方式,我們可以通過 document 對象和其他 DOM 選擇器獲取到目標元素,然後通過修改其內置屬性來實現元素屬性修改。

// 獲取目標元素
let element = document.querySelector('#target');

// 修改元素屬性
element.src = 'img/new-img.jpg';

方法二:使用 setAttribute() 方法

setAttribute() 方法可以幫助我們設置任意名稱和值的屬性,比如修改一個元素的 aria-label 屬性:

// 獲取目標元素
let element = document.querySelector('#target');

// 修改元素屬性
element.setAttribute('aria-label', 'new label');

方法三:使用 dataset 對象

dataset 對象可以幫助我們在 HTML 標籤里進行自定義數據的存儲和獲取,通過其 API,我們也可以獲得目標元素的屬性值,進而修改元素屬性。

// 獲取目標元素的自定義數據
let data = document.querySelector('#target').dataset;

// 修改某個數據
data.customKey = 'new value';

二、JS修改樣式中的屬性值

樣式是定義和渲染頁面元素的重要組成部分,我們經常會需要修改或更新元素的樣式屬性值。以下介紹幾種如何使用 JavaScript 修改樣式值的方法。

方法一:修改內聯樣式

當我們需要修改一個內聯樣式時,可以直接使用 style 對象的屬性來描述

// 獲取目標元素
let element = document.querySelector('#target');

// 修改元素的背景色
element.style.backgroundColor = '#f1f1f1';

方法二:使用 setProperty() 函數

如果屬性沒有直接在內聯樣式中定義,我們需要使用 setProperty() 函數去修改其屬性值:

// 獲取目標元素
let element = document.querySelector('#target');

// 修改元素顏色
element.style.setProperty('color', 'green');

方法三:使用 CSSStyleSheet 對象

CSSStyleSheet 對象提供了一種修改元素屬性的方法,使用該方式可以定位到真實的樣式表,逐層查找目標屬性。

// 獲取當前樣式表的引用
let stylesheet = document.styleSheets[0];

// 修改某個選擇器下的樣式
let rules = stylesheet.cssRules || stylesheet.rules;
rules[0].style.color = 'purple';

三、修改元素屬性案例

下面從經典案例入手,針對常見需要修改元素屬性的場景,給出詳細的操作方法。

修改圖片鏈接

// 獲取目標元素
let element = document.querySelector('img');

// 修改圖片鏈接
element.src = 'new-img.jpg';

修改輸入框的佔位符

// 獲取目標元素
let element = document.querySelector('input');

// 修改輸入框的佔位符
element.placeholder = '新的佔位符';

修改 a 標籤的 href 屬性

// 獲取目標元素
let element = document.querySelector('a');

// 修改 a 標籤的 href 屬性
element.href = 'https://www.example.com';

四、JS修改HTML元素內容

修改DOM元素的內容很常見,下面介紹三種實現方式。

使用 innerHTML

// 獲取目標元素
let element = document.querySelector('#target');

// 修改元素內容
element.innerHTML = '新的內容';

使用 textContent

// 獲取目標元素
let element = document.querySelector('#target');

// 修改元素內容
element.textContent = '新的文本';

使用 DOM API

// 獲取目標元素
let element = document.querySelector('#target');

// 清空子元素
while (element.hasChildNodes()) {
  element.removeChild(element.lastChild);
}

// 插入新的文本
let textNode = document.createTextNode('新的文本');
element.appendChild(textNode);

五、JS修改HTML元素屬性的方法

修改元素屬性值的方式比較多,下面介紹三種不同的方法。

使用 getAttribute() 和 setAttribute()

// 獲取目標元素的屬性
let element = document.querySelector('#target');
let oldValue = element.getAttribute('data-src');

// 修改元素屬性
element.setAttribute('data-src', 'new-value');

修改 HTML5 自定義數據

// 獲取目標元素的 HTML5 數據
let element = document.querySelector('#target');
let oldValue = element.dataset.customKey;

// 修改元素數據
element.dataset.customKey = 'new-value';

使用 classList 屬性

// 獲取目標元素的 class
let element = document.querySelector('#target');
let classes = element.classList;

// 添加新的 class
classes.add('new-class');

// 刪除舊的 class
classes.remove('old-class');

六、JS修改偽元素樣式

偽元素本質上是一種特殊的 CSS 選擇器,雖然無法通過普通的 DOM API 進行獲取和修改,但是可以通過修改其綁定的 CSS 規則來完成

// 獲取樣式表對象和要修改的選擇器
let stylesheet = document.styleSheets[0];
let selector = '.example::before';

// 修改偽元素樣式
let rules = stylesheet.cssRules || stylesheet.rules;
rules[0].style.content = '""';
rules[0].style.backgroundColor = 'red';

七、原生JS修改元素CSS屬性

直接通過 JavaScript 去操作 CSS 樣式通常需要看到很多重複的代碼,不僅容易出錯,而且代碼可讀性也不高。而使用類庫和框架,可以大大減少操作 CSS 的代碼量,減少出錯的可能性。

// 獲取目標元素
let element = document.querySelector('#target');

// 定義樣式對象
let styles = {
  backgroundColor: 'red',
  color: 'white',
  fontSize: '16px'
};

// 應用樣式
Object.assign(element.style, styles);

八、JS修改元素內容和樣式

有時候需要同時修改元素的內容和樣式,以下是兩種同時修改的方案。

修改樣式和內容

// 獲取目標元素
let element = document.querySelector('#target');

// 定義新的樣式和內容
let newStyles = {
  backgroundColor: 'red',
  color: 'white',
  fontSize: '16px'
};
let newContent = '新的內容';

// 應用樣式和內容
Object.assign(element.style, newStyles);
element.innerHTML = newContent;

修改樣式和內容(使用 jQuery)

// 使用 jQuery 獲取目標元素
let $element = $('#target');

// 定義新的樣式和內容
let newStyles = {
  'background-color': 'red',
  'color': 'white',
  'font-size': '16px'
};
let newContent = '新的內容';

// 應用樣式和內容
$element.css(newStyles);
$element.html(newContent);

九、JS修改元素屬性值的注意事項

需要注意的是,修改元素屬性值是具有局限性的,因為有些屬性值無法實時更新。

修改 value 屬性可能無法實時更新

對 input 元素的 value 屬性進行修改時,並不能保證修改後就能立即獲取到新的值,有時候需要等待瀏覽器渲染完成才能獲取。

// 獲取目標元素
let element = document.querySelector('input');

// 修改 input 的 value
element.value = 'new value';

// 立即獲取 value 值,可能返回的依然是舊的值
let value = element.value;

修改樣式屬性可能可靠性不高

通過 JavaScript 動態修改樣式屬性時,可能會受到 CSS 規則和瀏覽器支持的限制,因此可靠性不高。

// 獲取目標元素
let element = document.querySelector('div');

// 使用 JavaScript 修改樣式,但可能會被瀏覽器標記為「弱實現」規則
element.style.background = 'red';

參考資料

1. https://www.w3schools.com/js/js_htmldom_elements.asp
2. https://developer.mozilla.org/zh-CN/docs/Web/API/ElementCSSInlineStyle/setProperty
3. https://www.sitepoint.com/dom-manipulation-vanilla-javascript-no-jquery/

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/238202.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:10
下一篇 2024-12-12 12:10

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • 運維Python和GO應用實踐指南

    本文將從多個角度詳細闡述運維Python和GO的實際應用,包括監控、管理、自動化、部署、持續集成等方面。 一、監控 運維中的監控是保證系統穩定性的重要手段。Python和GO都有強…

    編程 2025-04-29
  • Python應用程序的全面指南

    Python是一種功能強大而簡單易學的編程語言,適用於多種應用場景。本篇文章將從多個方面介紹Python如何應用於開發應用程序。 一、Web應用程序 目前,基於Python的Web…

    編程 2025-04-29
  • Python wordcloud入門指南

    如何在Python中使用wordcloud庫生成文字雲? 一、安裝和導入wordcloud庫 在使用wordcloud前,需要保證庫已經安裝並導入: !pip install wo…

    編程 2025-04-29
  • Python小波分解入門指南

    本文將介紹Python小波分解的概念、基本原理和實現方法,幫助初學者掌握相關技能。 一、小波變換概述 小波分解是一種廣泛應用於數字信號處理和圖像處理的方法,可以將信號分解成多個具有…

    編程 2025-04-29
  • Python字符轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智能等領域廣泛應用。在很多場景下需要將字符串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字符轉列…

    編程 2025-04-29
  • Python初學者指南:第一個Python程序安裝步驟

    在本篇指南中,我們將通過以下方式來詳細講解第一個Python程序安裝步驟: Python的安裝和環境配置 在命令行中編寫和運行第一個Python程序 使用IDE編寫和運行第一個Py…

    編程 2025-04-29
  • Python起筆落筆全能開發指南

    Python起筆落筆是指在編寫Python代碼時的編寫習慣。一個好的起筆落筆習慣可以提高代碼的可讀性、可維護性和可擴展性,本文將從多個方面進行詳細闡述。 一、變量命名 變量命名是起…

    編程 2025-04-29
  • Python遍歷集合中的元素

    本文將從多個方面詳細闡述Python遍歷集合中的元素方法。 一、for循環遍歷集合 Python中,使用for循環可以遍歷集合中的每個元素,代碼如下: my_set = {1, 2…

    編程 2025-04-29
  • FusionMaps應用指南

    FusionMaps是一款基於JavaScript和Flash的交互式地圖可視化工具。它提供了一種簡單易用的方式,將複雜的數據可視化為地圖。本文將從基礎的配置開始講解,到如何定製和…

    編程 2025-04-29

發表回復

登錄後才能評論