将类添加到其ID与另一个元素的类相匹配的元素

时间:2019-05-14 19:15:12

标签: javascript jquery for-loop

我想获取元素的第二个类,然后将一个类添加到具有该ID的元素中。在Chrome,Firefox等中,它可以完美运行,但在IE11中则不能。你知道为什么吗?请帮助我

for (var i = 0; i < $('#example .item').length; i++) {
  var class_svg = document.getElementsByClassName("item")[i].className.split(' ')[1];
  var $elem = document.getElementById(class_svg);  
  $elem.classList.add("show");
}

2 个答案:

答案 0 :(得分:0)

根据the docs classList仅在Edge之前得到部分支持。使用className代替:

$elem.className += ' show';

编辑:感谢@Sterling Archer的提示

答案 1 :(得分:0)

使用SVG元素(我假设您已经基于示例代码创建了一个基本示例),然后在IE11和Edge中进行查看,您可以看到className属性是[object SVGAnimatedString] 。这是SVG元素的一些特殊对象,而不是处理该特殊对象,而只需使用getAttribute处理属性本身。以下是适用于大多数浏览器的代码:

for (var i = 0; i < $('#example .item').length; i++) {
  var class_svg = document.getElementsByClassName("item")[i].getAttribute("class").split(' ')[1];
  var $elem = document.getElementById(class_svg); 
  var classList = $elem.getAttribute("class");
  classList += " show";
  $elem.setAttribute("class",classList);
}

希望对您有用。