getAttributeSetAttribute


Hi,我是POPEYE,今天要來談談 getAttribute 與 setAttribute 。

getAttribute 與 setAttribute 是兩個我比較容易混淆的 JS 方法,所以我花了一點工夫來研究一下這兩個方法如何使用。

首先要了解這兩種方法是存取與操作 HTML 標籤屬性的方法,都必須要透過選取到某個 HTML DOM 節點來操作,所以寫法上一定是這樣子:

element.getAttribute('屬性名稱');
element.setAttribute('屬性名稱','屬性值');
//屬性名稱為 id 、 class 、 href、 data-** ……等等

getAttribute

getAttribute 用來取得 HTML 標籤的屬性值,如果指定的屬性不存在,則會回傳 null 或 “”。

<h2 class="title" id="quiet" data-band="Mayday" name="好好">
    最安靜的時刻,回憶總是最喧囂
</h2>
//JavaScript
const quiet = document.querySelector('.title');

console.log(quiet.getAttribute('class'));
// "title"
console.log(quiet.getAttribute('id'));
//"quiet"
console.log(quiet.getAttribute('data-band'));
//"Mayday"
console.log(quiet.getAttribute('name'));
//"好好"

所以我們可以把 HTML 節點的屬性值取出,拿來組字串之後,再塞回本來的節點去。

<h2 class="title" id="quiet" data-band="Mayday" name="好好">
    最安靜的時刻,回憶總是最喧囂
</h2>
//JavaScript
const quiet = document.querySelector('.title');

let str =`我最喜歡的歌詞是《${quiet.getAttribute('data-band')}》唱的
《${quiet.getAttribute('data-song')}》,
裡面這一句「${quiet.textContent}`;
quiet.textContent = str;

console.log(quiet.textContent);
//"我最喜歡的歌詞是《Mayday》唱的《null》,裡面這一句「最安靜的時刻,回憶總是最喧囂」"

本來 <h2> 標籤中 「最安靜的時刻,回憶總是最喧囂」 ,被改成 「我最喜歡的歌詞是《Mayday》唱的《null》,裡面這一句「最安靜的時刻,回憶總是最喧囂」」囉!!!

setAttribute

setAttribute 的功用在於修改 HTML 節的的屬性。

element.setAttribute('屬性名稱','屬性值');
//屬性名稱為 id 、 class 、 href、 data-** ……等等

不囉嗦!來看一下範例:


<h2 class="title2" data-song="好好" data-band="Mayday">
    最喧囂的時刻,寂寞包圍著孤島
</h2>

.blue {
  color: blue;
}
//JavaScript
const noise = document.querySelector('.title2');

noise.setAttribute("data-song","瘋狂世界");
noise.setAttribute('class','blue');
//字的顏色也變成藍色了

console.log(noise.getAttribute('data-song'));
//瘋狂世界"
console.log(noise.getAttribute('class'));
//"blue"

getAttribute 與 setAttribute 的進階使用

除了用來操作屬性之外,在做事件監聽的時候,也可以利用 getAttribute 來做一些判斷:

<ul class="item">
  <li class ="item1">item1</li>
  <li class ="item2">item2</li>
  <li class ="item3">item3</li>
  <li class ="item4">item4</li>
  <li class ="item5">item5</li>
</ul>
.item{
  font-size: 20px; 
}

.item1, .item2, .item3, .item4, .item5{
  margin-bottom: 20px;
}
.blue{
  color : blue;
  margin-bottom: 50px;
}
const item = document.querySelector('.item');

item.addEventListener('click',function(e){
  if(e.target.getAttribute('class') === 'item3'){
    e.target.setAttribute('class','blue')
  }
})

在這裡利用 e.target.getAttribute('class') 來判斷如果點擊到的 class 屬性如果是 item3 , 則把 e.target 的 class 屬性變成藍色的。

MDN 有把 getAttribute 與 setAttribute 這兩個節點方法可以操作的 HTML 屬性列出來,有需要時可以參考一下:


getAttributeSetAttribute
https://popeye-ux.github.io/2022/07/06/getAttributeSetAttribute/
作者
POPEYE
發布於
2022年7月6日
許可協議