我正在尝试某些事情并面对这个问题。当您尝试执行element.classList.remove.apply
时,会抛出错误:
未捕获的TypeError:非法调用
您可以使用以下代码段进行测试。
var div = document.querySelector('.test');
var classesToRemove = ['test1', 'test2', 'test3'];
div.classList.remove.apply(div, classesToRemove);
.test {
width: 100px;
height: 100px;
}
.test1 {
color: blue
}
.test2 {
background: gray;
}
.test3 {
border: 1px solid gray;
}
<div class='test test1 test2 test3'>Test</div>
注意:我知道我可以使用扩展运算符(...
)来解决这个问题,但我更感兴趣的是理解为什么会失败。
答案 0 :(得分:2)
你也可以在这里使用Function.prototype.apply,但是调用的正确上下文是div.classList
对象,而不是HTMLElement div
本身。
试试这个:
var div = document.querySelector('.test');
var classesToRemove = ['test1', 'test2', 'test3'];
div.classList.remove.apply(div.classList, classesToRemove);
&#13;
.test {
width: 100px;
height: 100px;
}
.test1 {
color: blue
}
.test2 {
background: gray;
}
.test3 {
border: 1px solid gray;
}
&#13;
<div class='test test1 test2 test3'>Test</div>
&#13;