我有一个由调用产生的节点
let node = document.getElementById('myID');
node是一个Node,它有一个classList对象,该对象有一个remove()方法
这对我有用:
node.classList.remove('alert');
但是,这不起作用:
let method = node['classList']['remove'];
method.call(node, ['myclass']);
我在第二种情况下收到错误:
Uncaught TypeError: 'remove' called on an object that does not implement interface DOMTokenList.
我做错了什么?
您的
method
引用 DOMTokenList 原型中的 remove
函数(即:来自 node.classList
),因此它期望其上下文(即:this
值)是 DOMTokenList (node.classLIst
),而不是只是node
:
let method = node['classList']['remove'];
method.call(node.classList, 'myclass');
另请注意,在这种情况下,将数组作为第二个参数传递给
.call()
将充当 node.classList.remove(['myClass'])
,因此您需要使用 .apply()
(如果您想传递代表您的参数的数组),或者删除本例中的数组。