Добавить класс к элементу, чей идентификатор соответствует классу другого элемента - PullRequest
1 голос
/ 14 мая 2019

Я хочу взять второй класс элемента, а затем добавить класс к элементу с таким идентификатором.В 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 голосов
/ 14 мая 2019

Создав базовый пример с использованием элемента 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);
}

Надеюсь, что работает для вас.

0 голосов
/ 14 мая 2019

Согласно до * Edge документы classList поддерживаются лишь частично. Используйте className вместо:

$elem.className += ' show';

edit: спасибо за подсказку @Sterling Archer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...