Из Документы MDN (примерно DocumentOrShadowRoot.styleSheets
):
Это экспериментальная технология.
Проверьте таблицу совместимости браузеров внимательно перед использованием этого метода в производстве.
Ожидайте, что поведение изменится в будущем.
Поэтому я бы не советовал использовать этот метод.
Я не могу однако более подробно объясните, почему вы видите описанную вами проблему, поскольку большинство браузеров должны поддерживать эту функцию в связанной таблице совместимости.
Теперь, чтобы ответить на ваш следующий вопрос:
как я могу изменить CSS другим способом?
Я всегда сначала получаю элемент через DOM, а затем применять стили к элементу напрямую. Например:
var myEl = document.getElementById("myId");
Затем вы можете сделать:
myEl.style.fontSize = "1rem";
Если вы не хотите нацеливать элемент по его атрибуту id
, вы можете использовать несколько других методов:
getElementsByClassName()
- принимает строковое значение имени класса, например . "myClass"
getElementsByTagName()
- принимает строковое значение имени тега, например. "body"
, "div"
querySelector()
- принимает строковое значение селектора CSS, например. "div.myClass p"
Однако они не возвращают ни одного элемента, такого как селектор id
. Например, чтобы получить первый элемент определенного класса:
var myEl = document.getElementsByClassName("myClass")[0];
И четвертый будет:
var myEl = document.getElementsByClassName("myClass")[3];