let { classList } = document.body;
classList.forEach((className) => {
if (className.startsWith('somePrefix')) {
classList.remove(className);
}
});
以上代码在非IOS浏览器上运行正常,但会失败:
TypeError: Cannot read property 'startsWith' of undefined
在IOS浏览器上(在 iphone 6s IOS 10 Safari和Chrome 上测试),以防删除一个或多个类。
这是因为在非IOS浏览器上,一旦你在迭代过程中删除了一个元素,它就会知道将迭代次数减少1,而在IOS上,它会尝试继续使用{的原始迭代次数。 {1}}。
我不是在寻找一个解决方案(很容易解决)但是为了解释为什么它会发生什么,在IOS上实现的方式有何不同? (可能是undefineds
,forEach
等)
感谢。