2 回答
![?](http://img1.sycdn.imooc.com/545861c80001141e02200220-100-100.jpg)
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>
![?](http://img1.sycdn.imooc.com/545863b500014e4602200220-100-100.jpg)
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>
添加回答
举报