Попытка изменить все теги p на указанный цвет, указанный в приведенном ниже коде

Я получаю ошибку typeError, потому что скрипт не может прочитать свойство «стиль» со значением null.

Я попытался добавить свойство к переменной, думая, что это сработает.

// ==UserScript==
// @name New Script
// @namespace Violentmonkey Scripts
// @match https://simply-how.com/enhance-and-fine-tune-any-web-page-the-complete-user-scripts-guide
// @grant none
// ==/UserScript==
var pTag = document.getElementById("p");

pTag.style.color =  "#4040c9"

I expect for all the "p" tags to change to the color #4040c9

person Community    schedule 04.09.2019    source источник
comment
Почему вы ожидали, что найдете все элементы p?   -  person jonrsharpe    schedule 04.09.2019
comment
У вас нет элемента с id="p" на странице. Если вам нужны все теги <p>, используйте getElementsByTagName()   -  person VLAZ    schedule 04.09.2019
comment
document.getЭлементById в единственном числе, а не во множественном числе. Если вы хотите изменить цвет всех тегов p, не устанавливайте для них встроенный стиль. Создайте правило css.   -  person Taplar    schedule 04.09.2019


Ответы (1)


Используйте getElementsByTagName, чтобы сохранить все элементы p в объекте HTMLCollection, а затем используйте простой цикл для изменения стиля для каждого экземпляра элемента.

Пример:

var pTag = document.getElementsByTagName("p");

for(var i=0; i<pTag.length; i++)
  {
    pTag[i].style.color = "#4040c9";
  }
person danny bee    schedule 04.09.2019
comment
getElementsByTagName возвращает не массив, а HTMLCollection. - person VLAZ; 04.09.2019
comment
Да вы правы :) - person danny bee; 04.09.2019