[classList.replace()不是使用babel-polyfill后的IE11中的方法或属性

问题描述 投票:1回答:1

我有一个需要支持IE11的Web应用程序。我正在使用ES6 +对其进行编码并使用babel-polyfill,因此它将与IE11兼容。我在IE11中可以正常使用箭头功能,匿名功能和其他ES6 +功能。但是,由于某些原因,element.classList.replace()方法不会被填充或填充,因为IE11似乎找不到它。

MDN ClassList

因此,我想做的是获取html元素列表,循环每个元素,然后用另一个CSS类替换CSS类(非常简单吧?)。嗯,IE11引发以下错误“对象不支持属性或方法'替换'。想法?

Webpack版本:4.32.2,@ babel /核心:7.4.5,@ babel / polyfill:7.4.4

这是我的JS:

var invalidClassElement = document.querySelectorAll("[aria-owns*=".concat(id, "]"))[0].childNodes;
      invalidClassElement.forEach(function (node) {
        if (node.classList.contains('k-invalid')) {         
         
         node.classList.replace('k-invalid', 'k-default');
          
          // The code below works in IE11.
          // node.classList.remove('k-invalid');
          // node.classList.add('k-default');
        }

Error

javascript html polyfills
1个回答
0
投票

babel-polyfill不会polyfill classList,并且IE11中对classList的支持是有限的。您需要一个额外的polyfill,因为您提供的指向MDN的链接也表明。

也请参见此现有答案:

Object doesn't support property or method 'replace' on Internet Explorer 11

以及一个相关的core-js问题(由babel-polyfill使用,因此解释了为什么未实现):https://github.com/zloirock/core-js/issues/287

© www.soinside.com 2019 - 2024. All rights reserved.