@anton99zel
29а класс средней школы №7

Почему не работает скрипт (Uncaught TypeError: Cannot read property)?

В консоле:
Uncaught TypeError: Cannot read property 'querySelector' of null
    at activateWebcamMode (script.js:330)
    at HTMLDocument.<anonymous> (script.js:153)

В районе строки 153: указано на activateWebcamMode(e);
spoiler
document.addEventListener('click', function(e) {
        if (e.target.closest('.trying__little-photo-slide') && !e.target.closest('.trying__little-photo-slide_active')){
            changeCurPhoto(e);
        }
        if (e.target.matches('.webcam-btn')) {
            activateWebcamMode(e);
        }
        if (e.target.matches('#tryon-photo-upload-btn')) {
            var event  = new MouseEvent('click',{
                bubbles: true,
                cancelable: true,
            })
            document.getElementById('tryon-photo-upload').dispatchEvent(event);
            //uploadPhoto(e);
        }
        if (e.target.closest('#tryon-zoom-in')) {
            zoom(e, 'in');
        }
        if (e.target.closest('#tryon-zoom-out')) {
            zoom(e, 'out');
        }
        if (e.target.closest('#tryon-rotate-left')) {
            rotate(e, 'left');
        }
        if (e.target.closest('#tryon-rotate-right')) {
            rotate(e, 'right');
        }
    })

В районе строки 330: указывает на
elemContainer.querySelector('.trying__little-photo-slide_active').classList.remove('trying__little-photo-slide_active');


spoiler
function activateWebcamMode(e) {
        var elemContainer = e.target.closest('.trying');
        elemContainer.querySelector('.trying__little-photo-slide_active').classList.remove('trying__little-photo-slide_active');
        overlay.style.cursor = 'auto';
        document.getElementById('image').classList.add('trying__hidden');
        document.getElementById('video').classList.remove('trying__hidden');
        var event = new CustomEvent('activateWebcamMode',{
            bubbles: true,
            cancelable: true,
            detail: {
                trackerCanvas: document.getElementById('video')
            }
        })
        e.target.dispatchEvent(event);
    }



Где то мелькало в сети, что подобное может быть связано со скрытым содержимым, типа input.... Но так и не разобрался.
А также, можно ли сделать что-нибудь типа ссылки, чтобы попробовать вызвать функцию еще раз?
  • Вопрос задан
  • 3787 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Не найден элемент e.target.closest('.trying'), то есть у объекта, вызвавшего событие, нет родителя с классом trying.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы