Используйте Javascript, чтобы найти значение атрибута элемента, которое можно найти в списке, и добавить класс к некоторым его дочерним элементам, если это значение присутствует?

#javascript #css

Вопрос:

Я хочу скрыть некоторые записи на странице форума, если они сделаны пользователями, которые мне не нравятся, и их способ сделать это-найти внешний div, который соответствует

Форум, на котором я нахожусь, подвергся нападению пользователей, которые хотят уничтожить их, заполнив нерелевантными изображениями, и модератор не может справиться с натиском.

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

Сообщения заключены во внешний разделитель, в котором содержится имя пользователя.

 div[poster-name="spam_imager"] > a.thumbnail {
    visibility:hidden;
    /* display: none; (an alternative) */

}

div[poster-name="spam_imager"]  img.preview {
    visibility:hidden;
    /* display: none; (an alternative) */
}
 

Но он не будет масштабироваться, так как необходимо добавить много пользователей, поэтому функция должна проверить, присутствует ли значение poster-name атрибута в списке, а затем найти дочернее изображение с preview или дочернюю ссылку с thumbnail классом, а затем добавить spam_image_block в класс.

Таким образом, двух правил будет достаточно:

 a.spam_image_block {
    visibility:hidden;
    /* display: none; (an alternative) */
}


img.spam_image_block {
    visibility:hidden;
    /* display: none; (an alternative) */
}
 

Комментарии:

1. document.querySelectorAll('div[poster-name]').forEach(div => { if (list.includes(this.getAttribute('poster-name'))) this.querySelector('img').style.display = "none"; });

2. @ChrisG Теперь мне нужно восстановить мои старые навыки и сценарии Greasemonkey и посмотреть, как действовать дальше. Список должен быть откуда-то загружен и также обновляться. Спасибо.

3. Они, братан, я не думаю, что вы предоставляете достаточно информации, вы только что описали проблему и добавили немного CSS, который вообще не помогает ее проверять. Ваш пост почти хочет, чтобы мы сделали этот код для вас, а не просто помогли вам решить проблему, и это не бесплатно, как будто вы застряли в проблеме, и хорошо описали ее и предоставили все, чтобы помочь ее исправить. Я думаю, что этот пост следует закрыть или улучшить, чтобы получить более подробную информацию

4. @ChrisG Когда я пытаюсь это сделать, я получаю сообщение об ошибке TypeError: this.getAttribute is not a function

5. Правильно, замените this на div (в обоих местах)

Ответ №1:

Это требует практического решения, основанного на предотвращении загрузки пользователем определенного количества изображений, с точки зрения разрешения и запрета, я предлагаю отправить значение разрешения пользователя , чтобы оно было истинным или ложным , с основными данными при загрузке страницы в JavaScript для настройки кнопки загрузки или нет, и я не рекомендую полагаться на CSS для этого, потому что его очень легко изменить из браузера, независимо от используемого для этого метода

Комментарии:

1. ОП не поддерживает форум, они там просто пользователи.

2. По тому же принципу я думаю, что изображения и остальные компоненты, которые вы хотите предотвратить и показать, создаются из данных, поступающих из баз данных, и организованы сценарием, независимо от языка сервера, используемого в нем. Я также думаю, что вы фильтруете эти данные, прежде чем авторизовать их в этом сценарии

3. Это так, как говорит @ChrisG

4. Я думаю, что @MohamedElAzazy-бот. 3 года в stackoverflow, набрав всего 9 баллов. Мне очень жаль, но в последнее время их слишком много в Интернете.

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