0
0

Первое задание
- Написать функцию вызова модального окна
- Привязать модальное окно к кнопкам “Узнать подробнее” в табах. Код не должен дублироваться

модальное окно открывается при клике на кнопку "узнать подробнее", но только на 1-м активном блоке

код :

сам скрипт

window.addEventListener('DOMContentLoaded', function () {
    'use strict';
    let tab = document.querySelectorAll('.info-header-tab'),
        info = document.querySelector('.info-header'),
        tabContent = document.querySelectorAll('.info-tabcontent'),
        btn = document.querySelector('.description-btn');

    function hideTabContent(a) {
        for (let i = a; i < tabContent.length; i++) {
            tabContent[i].classList.remove('show');
            tabContent[i].classList.add('hide');
        }
    }
    hideTabContent(1);

    function showTabContent(b) {
        if (tabContent[b].classList.contains('hide')) {
            tabContent[b].classList.remove('hide');
            tabContent[b].classList.add('show');

        }
    }

    info.addEventListener('click', function (event) {
        let target = event.target;
        if (target && target.classList.contains('info-header-tab')) {
            for (let i = 0; i < tab.length; i++) {
                if (target == tab[i]) {
                    hideTabContent(0);
                    showTabContent(i);
                    break;
                }
            }
        }
    });

    // timer

    let deadLine = '2020-06-23';

    function getTimeRemaining(endtime) {
        let t = Date.parse(endtime) - Date.parse(new Date()),
            seconds = Math.floor((t / 1000) % 60),
            minutes = Math.floor((t / 1000 / 60) % 60),
            hours = Math.floor((t / (1000 * 60 * 60)));

        return {
            'total': t,
            'hours': hours,
            'minutes': minutes,
            'seconds': seconds
        };
    }

    function setClock(id, endtime) {
        let timer = document.getElementById(id),
            hours = timer.querySelector('.hours'),
            minutes = timer.querySelector('.minutes'),
            seconds = timer.querySelector('.seconds'),
            timeInterval = setInterval(updateClock, 1000);

        function updateClock() {
            let t = getTimeRemaining(endtime);

            function addZero(num) {
                if (num <= 9) {
                    return '0' + num;
                } else return num;
            };

            hours.textContent = addZero(t.hours);
            minutes.textContent = addZero(t.minutes);
            seconds.textContent = addZero(t.seconds);


            if (t.total <= 0) {
                clearInterval(timeInterval);
                hours.textContent = '00';
                minutes.textContent = '00';
                seconds.textContent = '00';
            }

        }
    }

    setClock('timer', deadLine);


    // Modal

    let more = document.querySelector('.more'),
        overlay = document.querySelector('.overlay'),
        close = document.querySelector('.popup-close');
        


    more.addEventListener('click', function() {
        overlay.style.display = 'block';
        this.classList.add('more-splash');
        document.body.style.overflow = 'hidden';
    });

    close.addEventListener('click', function() {
        overlay.style.display = 'none';
        more.classList.remove('more-splash');
        document.body.style.overflow = '';       
    });


    close.addEventListener('click', function() {
        overlay.style.display = 'none';
        document.body.style.overflow = '';
    });


});
let btn = document.querySelector('.description-btn'),
    overlay = document.querySelector('.overlay'),
    close = document.querySelector('.popup-close');


btn.addEventListener('click', function() {
    overlay.style.display = 'block';
});


Danial Muratov
4 years ago






Добрый день. У вас в коде проблема в том, что вы привязываете событие лишь к одной кнопке на странице. И еще есть повторения в коде: https://prnt.sc/t4w9uk (они совершенно не нужны)

Для того, чтобы сделать привязку ко всем кнопкам - необходимо получить их все и перебрать через forEach:
let btn = document.querySelectorAll('.description-btn');

btn.forEach(btn => {
btn.addEventListener('click', ()=> {
overlay.style.display = 'block';
})
});

Иван Петриченко
4 years ago

это в каком уроке? к уроку должны быть приложены решения от преподавателя - можно по ним проверить или взять оттуда непонятные моменты как подсказку

Сергей Белов
4 years ago

JavaScript - полный курс с нуля до результата! | Задание 61 из 90

Урок 3.8. Создаем модальное окно и работаем с this

1) Первое задание
- Написать функцию вызова модального окна
- Привязать модальное окно к кнопкам “Узнать подробнее” в табах. Код не должен дублироваться
2) Второе задание
- У вас есть код:

<input id="age" value="30">
let age = document.getElementById('age');
function showUser(surname, name) {
alert("Пользователь " + surname + " " + name + ", его возраст " + this.value);
}
showUser();

- Выведите на экран правильное сообщение, которое берет значение из input
Написать скрипт в отдельном js файле
4) Проверить, чтобы все работало и не было ошибок в консоли
5) Добавить папку с уроком на GitHub

______________________________________________________

Решение https://beonmax.com/source_courses/006javascript/10/script.js

Здесь есть решение только ко второму заданию..

Danial Muratov
4 years ago

3 ответов