Почему нельзя применять применяются с classList? - PullRequest
0 голосов
/ 11 декабря 2019

Я пытаюсь добавить элемент classList в среде, где у меня нет доступного синтаксиса распространения. Использование apply завершается с ошибкой TypeError:

const classes = 'red blue';
const tag = document.querySelector('#tag')
const list =  classes.split(/\s/);
console.log(list); // ['red', 'blue']
tag.classList.add.apply(tag, list); // Error
tag.classList.add('green'); // doesn't happen
.blue {
  background: blue
}
.red {
  color: red;
}
.green {
  border: 3px double green;
}
<p id="tag">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fugiat nam nihil sed, dicta, maxime, atque nulla voluptatibus necessitatibus aliquam quasi inventore voluptas dolore labore ratione officia! Rerum vel, similique perferendis?</p>

Uncaught TypeError: Illegal invocation

Я должен что-то делать неправильно, потому что это работает с распространением. В чем проблема с этим вызовом classList.add?

1 Ответ

0 голосов
/ 11 декабря 2019

Вы должны использовать t вместо tag

const classes = 'red blue';
const t = document.querySelector('#tag')
const list =  classes.split(/\s/);

t.classList.add.apply(t, list);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...