Просто не могу понять, почему этот код не работает. Я пытаюсь заменить цвет фона класса на основе внутреннего текста документа.
У меня нет идентификатора для подключения, поэтому мне приходится искать класс.
<script>
if (window.location.href.startsWith('https://mytestsite.com.au/')) {
if (( document.documentElement.innerText).indexOf('API') > -1) {
document.getElementsByClassName('training-card__name').style.backgroundColor = "red";
}
}
</script>
Помощь оценена по достоинству.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


document.getElementsByClassName() метод возвращает коллекцию элементов с указанным именем класса. затем вам нужно перебрать эту коллекцию, чтобы указать цвет фона.
См. код ниже:
if (window.location.href.startsWith('https')) { // Replace with your url - https://mytestsite.com.au/
var elements = document.getElementsByClassName('training-card__name');
for (var i = 0; i < elements.length; i++) {
if (elements[i].innerText.indexOf('API') > -1) { // Check if a inner text contains API in specific element
elements[i].style.backgroundColor = "red";
}
}
} else {
console.info("This script only runs on https://mytestsite.com.au/");
}.training-card__name {
padding: 10px;
margin: 5px;
border: 1px solid #000;
}<html lang = "en">
<head>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<title>Test Site</title>
</head>
<body>
<div class = "training-card__name">Basic Training</div>
<div class = "training-card__name">API Training</div>
<div class = "training-card__name">Advanced API Training</div>
<div class = "training-card__name">Intermediate Training</div>
</body>
</html>
getElementsByClassName()возвращаетHTMLCollection. У него нет свойстваstyle. Вам нужно будет перебрать коллекцию и добавить стиль к каждому элементу отдельно.