2 回答

TA貢獻1780條經驗 獲得超1個贊
getElementsByClassName返回元素的實時集合。抓取第一個索引[0]是正確的,但你不需要第二次這樣做:
x.className += ' test-2'
您可能會發現使用querySelector和classList更容易一些,因為它們的界面更新并且通常更適合現代 JS 開發。
querySelector允許您使用 CSS 選擇器來選擇元素,并返回使用該選擇器找到的元素的第一個實例。(它的姊妹方法querySelectorAll返回一個(非活動的)節點列表,您可以對其進行迭代)。
classList 允許您簡單地從元素添加和刪除類,而無需將類字符串相互連接。
這是一個演示。
const button = document.querySelector('button');
button.addEventListener('click', addClass, false);
function addClass() {
var x = document.querySelector('.test-3');
x.classList.add('test-2');
}
p { color: red; }
.test-2 { font-size: 2em; color: blue; }
.test-3 { font-size: 5em; font-weight: bold; }
<p>test 1</p>
<h2 class="test-2">test 2</h2>
<h3 class="test-3">test 2</h3>
<button>click me</button>

TA貢獻1995條經驗 獲得超2個贊
添加類名時刪除額外的 [0] 并且不要從函數中返回它
function addClass () {
var x = document.getElementsByClassName("test-3")[0];
x.className += ' test-2';
console.log(x.getAttribute("class"))
}
p{
color: red;
}
.test-2{
font-size: 2em;
color: blue;
}
.test-3{
font-size: 5em;
font-weight: bold;
}
<p>
test 1
</p>
<h2 class="test-2">
test 2
</h2>
<h3 class="test-3">
test 2
</h3>
<button onclick="addClass()">
click me
</button>
添加回答
舉報