Почему скрипт JavaScript не работает на платформе Tilda?

Здравствуйте. У меня возникла проблема с работой скрипта в Tilda. При определении переменной block во время просмотра через консоль возникает ошибка: Uncaught ReferenceError: block is not defined. Можете ли вы помочь мне найти причину этой ошибки? Моя задача состоит в том, чтобы при клике на любое изображение из галереи, имеющее класс .t603__blockimg, при открытии попапа был осуществлен перенос закрывающей кнопки .t-zoomer__close в тело попапа .t-carousel__zoomer__wrapper, над изображением .t-carousel__zoomer__img. Я понимаю, что вопрос может показаться примитивным, но мне очень хотелось бы разобраться в этом. Заранее спасибо за помощь.
  • 11 февраля 2024 г. 23:19
Ответы на вопрос 2
Приветствую! Ошибка `Uncaught ReferenceError: block is not defined` говорит о том, что в вашем коде используется переменная `block`, которая не была объявлена. Скорее всего, это происходит потому, что вы пытаетесь обратиться к переменной до того, как она была определена, или из-за опечатки в имени переменной.

Чтобы разобраться в проблеме, я предлагаю рассмотреть следующие шаги:

1. Убедитесь, что скрипт загружается после того, как DOM полностью построен. Вы можете использовать `DOMContentLoaded` или поместить ваш скрипт внизу тела страницы (`body`) чтобы быть уверенным в том, что все элементы загружены.

2. Убедитесь, что вы корректно добавили свой скрипт на платформу Tilda. В Tilda для добавления пользовательских скриптов обычно используется специальный блок «HTML-код» или настройки страницы/сайта, где можно вставить код JavaScript.

3. Проверьте синтаксис вашего кода. Иногда достаточно одной опечатки, чтобы скрипт перестал работать.

Для решения вашей задачи с переносом кнопки закрытия попапа над изображением, после того как изображение в попапе было открыто, ваш код может выглядеть примерно так:

```javascript
document.addEventListener('click', function(e) {
    if (e.target.classList.contains('t603__blockimg')) {
        // Здесь код, который будет вызываться при клике на элемент с классом t603__blockimg
        // Вы можете использовать setTimeout, чтобы задержать выполнение кода, пока попап полностью не откроется
        setTimeout(function(){
            var closeButton = document.querySelector('.t-zoomer__close');
            if (closeButton) {
                var popupImg = document.querySelector('.t-carousel__zoomer__img');
                var popupWrapper = document.querySelector('.t-carousel__zoomer__wrapper');
                if(popupImg && popupWrapper){
                    // Переносим кнопку закрытия
                    popupWrapper.insertBefore(closeButton, popupImg);
                }
            }
        }, 500); // Задержка в 500 миллисекунд (подберите требуемое время)
    }
});
```

Обратите внимание на следующее:
- В коде используется `addEventListener` для отслеживания кликов по странице.
- Код проверяет, содержит ли элемент, по которому был сделан клик, класс `t603__blockimg`.
- Перемещение элемента `.t-zoomer__close` осуществляется с помощью `insertBefore`.

Если этот код не работает, убедитесь, что селекторы (`querySelector`) соответствуют классам элементов в вашей галерее и что они корректно идентифицируют элементы в DOM.

Если проблема не в этом, то возможна проблема с конкретными особенностями платформы Tilda, и одним из решений может быть обращение в поддержку Tilda за более специфической помощью.
Такая ошибка не может возникать на этапе объявления переменой. Она возникает на этапе ее использования так как не может ее найти. В вашем коде я никаких проблем не вижу за исключением того как это написано) 

Возможно что слово block написано с буквой «с» в русской раскладке.
Похожие вопросы