Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 25.12.2021
Сообщений: 25

Как повесить функцию,которая будет изменять цвет при клике по блоку,а таких блоков 5? Нужно перебрать эти блоки циклом?

04.02.2025, 22:07. Показов 1175. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как повесить функцию,которая будет изменять цвет при клике по блоку,а таких блоков 5?
Нужно перебрать эти блоки циклом? И что с эвентом?
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
let maket = document.getElementsByClassName("maket");
 
let children = maket.childNodes;
console.log(maket);
 
 
for (var i = 0; i < children.length; ++i) {
 
    let children=children[i];
 
 
    children.addEventListener('click',color);
  
}
 
  function color(e){
 
        this.style.backgroundColor = "orange"; 
       
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2025, 22:07
Ответы с готовыми решениями:

При клике на блок с определенным цветом менялся цвет header который на блоке (Таких блоков 5)
при клике на блок с определенным цветом менялся цвет header который на блоке (Таких блоков 5)

Как сделать так, чтобы при клике на элемент меню появлялся нужный блок и исчезал ненужный?
У меня есть список-меню .sidebar-menu и каждый li этого списка имеет свой id. Так же имеется блок .services-info, где находятся блоки, один...

Как изменить цвет блока по клику
Имеется файл index.php: &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;meta name=&quot;viewport&quot;...

3
 Аватар для voraa
1254 / 1170 / 179
Регистрация: 21.01.2024
Сообщений: 5,451
04.02.2025, 23:01
Тут у вас ошибок полно

let maket = document.getElementsByClassName("maket");

let children = maket.childNodes;

Буква s говорит, что возвращается не элемент, а список. Даже если элемент один.
У списка нет свойства childNodes

JavaScript
1
let children=children[i];
Нельзя так соединять разные чилдрены. Да и зачем? Разве других идентификаторов мало?

Приведите html код, что бы понять, что вам надо.
0
413 / 304 / 113
Регистрация: 28.08.2013
Сообщений: 802
05.02.2025, 00:24
HTML отвечает за структуру. CSS - отвечает за внешний вид. JavaScript отвечает за итеративность.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Document</title>
        <style>
            html, body {
                margin: 0px;
                padding: 0px;
                width: 100%;
                height: 100%;
            }
            body {
                font-family: sans-serif;
                display: flex;
                justify-content: space-around;
                flex: 1;
            }
            main {
                display: flex;
                align-items: center;
                flex: .9;
                gap: 20px;
 
            }
            div {
                display: flex;
                justify-content: center;
                align-items: center;
                flex: 0.5;
                border: 1px solid #000000;
                font-size: 7rem;
                font-weight: bold;
                color: #FFFFFF;
                height: 30%;
                background-color: #0000FF;
                cursor: pointer;
            }
            .bgColor1 > div {                 /* Установит фон всем потомкам (div) */
                background-color: #FF0000;
            }
            .bgColor2 > div {
                background-color: #00FF00;
            }
        </style>
    </head>
    <body>
        <main>
            <div>1</div>
            <div>2</div>
            <div>3</div>
            <div>4</div>
            <div>5</div>
        </main>
        <script>
            const main = document.querySelector('main');
            let toggle = true;
            if(main){
                main.addEventListener('click', (event) => {
                    if(toggle){
                        event.target.parentNode.className = 'bgColor1';
                    }
                    else{
                        event.target.parentNode.className = 'bgColor2';
                    }
                    toggle = !toggle;
                });
            }
        </script>
    </body>
</html>
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,182
05.02.2025, 09:49
Цитата Сообщение от kidASM Посмотреть сообщение
JavaScript отвечает за итеративность
JS более гибок в решении таких задач.

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Document</title>
        <style>
            html, body {
                margin: 0px;
                padding: 0px;
                width: 100%;
                height: 100%;
            }
            body {
                font-family: sans-serif;
                display: flex;
                justify-content: space-around;
                flex: 1;
            }
            main {
                display: flex;
                align-items: center;
                flex: .9;
                gap: 20px;
                /* Установит фон всем потомкам (div) */
                &.bgColor0 > div {                 
                    background-color: #FF0000;
                }
                &.bgColor1 > div {
                    background-color: #00FF00;
                }
            }
            div {
                display: flex;
                justify-content: center;
                align-items: center;
                flex: 0.5;
                border: 1px solid #000000;
                font-size: 7rem;
                font-weight: bold;
                color: #FFFFFF;
                height: 30%;
                background-color: #0000FF;
                cursor: pointer;
            }
        </style>
    </head>
    <body>
        <main>
            <div>1</div>
            <div>2</div>
            <div>3</div>
            <div>4</div>
            <div>5</div>
        </main>
        <script>
            let t = 0;
            document.querySelector('main')?.addEventListener('click', (event) => {
                event.target.parentNode.className = 'bgColor' + (t++ % 2) 
            });
        </script>
    </body>
</html>
Добавлено через 4 минуты
Цитата Сообщение от Nubas22 Посмотреть сообщение
Нужно перебрать эти блоки циклом?
Необязательно...
Можно использовать т.н. делегирование.
Этот прием довольно хорошо описан в букваре https://learn.javascript.ru/event-delegation

Добавлено через 2 минуты
Nubas22, вот недавно показывали решение аналогичной проблемы...
Открывать блок в массиве и закрывать соседние
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.02.2025, 09:49
Помогаю со студенческими работами здесь

Имеются блоки, в них имеются еще по блоку. Нужно чтобы при клике на первый раскрывался дочерний
Допустим разметка (не исключаю что не она может не подойти): &lt;div id=&quot;container&quot;&gt; &lt;div id=&quot;projet&quot;&gt; ...

Нужно создать функцию которая будет вычислять центры этих фигур,а потом создать еще одну функцию которая уже будет рисовать эти точки(центры)в фигурах
#include &lt;vcl.h&gt; #pragma hdrstop #include &quot;Unit1.h&quot; //---------------------------------------------------------------------------...

Как повесить функцию при клике на метку яндекс карты?
Здравствуйте, как можно повесить функцию при нажатии на метку на яндекс картах? Есть код в JavaScript, который создаёт метки на карте....

В slick slider не работает переключение блоков при клике на другие блоки
Когда через js подключаю slick-slider, перестают работать кнопки переключения между блоками. Без slick slider все работает. Вопрос, как в...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru