最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用JavaScript操作DOM節(jié)點(diǎn)屬性的通用方法

 更新時間:2026年01月28日 08:37:25   作者:好大哥呀  
文章介紹了DOM屬性的兩類形式及操作方法,包括通用的getAttribute、setAttribute、removeAttribute方法,以及DOM對象直接訪問屬性的快捷方式,同時,文章還特別說明了class屬性的處理,需要的朋友可以參考下

一、核心概念:DOM 屬性的兩類形式

在操作前先分清兩個易混概念,避免踩坑:

  • HTML 原生屬性:標(biāo)簽上寫的屬性(如id="box"、src="img.jpg"class="content");
  • DOM 對象屬性:JS 獲取 DOM 節(jié)點(diǎn)后,節(jié)點(diǎn)對象自帶的屬性(如node.id、node.src、node.className);大部分場景下兩者可以互通,但部分屬性有專屬寫法(比如class對應(yīng)className)。

二、通用操作:getAttribute/setAttribute/removeAttribute

這是操作所有 HTML 屬性的通用方法,無論原生屬性還是自定義屬性都適用,兼容性最好。

方法作用語法示例
getAttribute(屬性名)獲取屬性值box.getAttribute('id')
setAttribute(屬性名, 值)設(shè)置 / 新增屬性box.setAttribute('title', '提示文字')
removeAttribute(屬性名)刪除屬性box.removeAttribute('class')

代碼示例:通用方法操作屬性

<div id="box" class="container" data-index="1">測試div</div>

<script>
  const box = document.getElementById('box');

  // 1. 獲取屬性
  console.log(box.getAttribute('id')); // 輸出:box
  console.log(box.getAttribute('class')); // 輸出:container
  console.log(box.getAttribute('data-index')); // 輸出:1(自定義屬性)

  // 2. 設(shè)置/新增屬性
  box.setAttribute('title', '這是一個div'); // 新增title屬性
  box.setAttribute('class', 'new-container'); // 修改class屬性
  box.setAttribute('data-type', 'test'); // 新增自定義data屬性

  // 3. 刪除屬性
  box.removeAttribute('data-index'); // 刪除data-index屬性

  // 查看修改后的HTML:<div id="box" class="new-container" data-type="test" title="這是一個div">測試div</div>
  console.log(box.outerHTML);
</script>

三、快捷操作:DOM 對象直接訪問屬性

對于常用的原生屬性(如 id、src、href、type 等),可以直接通過DOM節(jié)點(diǎn).屬性名操作,比通用方法更簡潔。

?? 注意:部分屬性名和 HTML 標(biāo)簽里的寫法不同(核心差異):

  • HTML 里的class → JS 里的className(因?yàn)?class 是 JS 關(guān)鍵字);
  • HTML 里的for(label 標(biāo)簽) → JS 里的htmlFor;
  • HTML 里的readonly → JS 里的readOnly(駝峰命名)。

代碼示例:快捷操作屬性

<img id="img" src="old.jpg" alt="舊圖片">
<input type="text" id="input" class="form-input" readonly>
<label for="input" id="label">輸入框:</label>

<script>
  const img = document.getElementById('img');
  const input = document.getElementById('input');
  const label = document.getElementById('label');

  // 1. 獲取屬性
  console.log(img.src); // 輸出:完整的圖片URL(如http://xxx/old.jpg)
  console.log(input.className); // 輸出:form-input(對應(yīng)class屬性)
  console.log(label.htmlFor); // 輸出:input(對應(yīng)for屬性)
  console.log(input.readOnly); // 輸出:true(布爾值,不是字符串)

  // 2. 設(shè)置屬性
  img.src = 'new.jpg'; // 修改圖片地址
  img.alt = '新圖片'; // 修改alt屬性
  input.className = 'new-form-input'; // 修改class
  input.readOnly = false; // 取消只讀

  // 3. 清空屬性(部分屬性可直接賦值為空)
  img.alt = '';
</script>

四、特殊屬性處理

1. class 屬性:推薦用 classList(操作樣式類更靈活)

直接修改className會覆蓋全部類,而classList支持「添加、移除、切換、判斷」單個類,是操作樣式類的最佳方式。

<div id="demo" class="box">測試樣式</div>

<script>
  const demo = document.getElementById('demo');

  // 1. 添加類(不會覆蓋原有類)
  demo.classList.add('active', 'red'); // 可同時加多個類

  // 2. 移除類
  demo.classList.remove('box');

  // 3. 切換類(有則刪,無則加,適合點(diǎn)擊切換場景)
  demo.classList.toggle('active');

  // 4. 判斷是否包含某個類
  console.log(demo.classList.contains('red')); // 輸出:true
</script>

2. data-* 自定義屬性:推薦用 dataset

HTML5 新增的data-*自定義屬性(如data-id、data-name),可以通過dataset快捷訪問,無需寫getAttribute。

<div id="user" data-id="1001" data-user-name="張三">用戶信息</div>

<script>
  const user = document.getElementById('user');

  // 1. 獲取data屬性(自動轉(zhuǎn)駝峰:data-user-name → userName)
  console.log(user.dataset.id); // 輸出:1001
  console.log(user.dataset.userName); // 輸出:張三

  // 2. 設(shè)置data屬性
  user.dataset.age = '20'; // 新增data-age="20"
  user.dataset.userName = '李四'; // 修改data-user-name="李四"

  // 3. 刪除data屬性(賦值為null或delete)
  delete user.dataset.age;
</script>

3. 布爾屬性:如 checked、disabled、selected

這類屬性的特點(diǎn)是「只要存在就生效」,JS 中對應(yīng)的值是布爾類型(true/false),而非字符串。

<input type="checkbox" id="checkbox" checked>
<button id="btn" disabled>禁用按鈕</button>

<script>
  const checkbox = document.getElementById('checkbox');
  const btn = document.getElementById('btn');

  // 獲取布爾屬性
  console.log(checkbox.checked); // 輸出:true
  console.log(btn.disabled); // 輸出:true

  // 修改布爾屬性
  checkbox.checked = false; // 取消勾選
  btn.disabled = false; // 啟用按鈕
</script>

五、常用場景示例

示例 1:點(diǎn)擊按鈕切換圖片

<img id="banner" src="banner1.jpg" alt="輪播圖1">
<button id="changeBtn">切換圖片</button>

<script>
  const banner = document.getElementById('banner');
  const changeBtn = document.getElementById('changeBtn');
  let isFirst = true;

  changeBtn.addEventListener('click', function() {
    if (isFirst) {
      banner.src = 'banner2.jpg';
      banner.alt = '輪播圖2';
    } else {
      banner.src = 'banner1.jpg';
      banner.alt = '輪播圖1';
    }
    isFirst = !isFirst;
  });
</script>

示例 2:獲取表單輸入框的屬性并修改

<input type="text" id="username" placeholder="請輸入用戶名" maxlength="10">
<button id="checkBtn">查看屬性</button>

<script>
  const username = document.getElementById('username');
  const checkBtn = document.getElementById('checkBtn');

  checkBtn.addEventListener('click', function() {
    // 獲取輸入框?qū)傩?
    console.log('占位符:', username.placeholder);
    console.log('最大長度:', username.maxLength);
    console.log('當(dāng)前值:', username.value);

    // 修改屬性
    username.placeholder = '請輸入真實(shí)姓名';
    username.maxLength = 15;
  });
</script>

總結(jié)

  1. 通用場景:用getAttribute/setAttribute/removeAttribute操作所有屬性(包括自定義屬性);
  2. 常用原生屬性:直接用DOM節(jié)點(diǎn).屬性名(如img.srcinput.className)更簡潔;
  3. 特殊屬性
    • class 用classList(add/remove/toggle);
    • data-* 自定義屬性用dataset;
    • 布爾屬性(checked/disabled)賦值布爾值(true/false)。

以上就是使用JavaScript操作DOM節(jié)點(diǎn)屬性的通用方法的詳細(xì)內(nèi)容,更多關(guān)于JavaScript操作DOM節(jié)點(diǎn)屬性的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

滕州市| 永登县| 叙永县| 从江县| 顺昌县| 右玉县| 遵义县| 凤山市| 广安市| 股票| 彭阳县| 黄大仙区| 安义县| 克山县| 大洼县| 天长市| 台南市| 延川县| 满洲里市| 华宁县| 竹山县| 建阳市| 蕲春县| 沙洋县| 翁源县| 宕昌县| 甘肃省| 渭源县| 金沙县| 鹿邑县| 花垣县| 常德市| 徐闻县| 咸宁市| 南汇区| 泗洪县| 庄浪县| 建水县| 兴宁市| 高碑店市| 深圳市|