Навешать disabled на кнопку, если значения не валидны. Можно обработать submit через listener события и проконтролировать валидацию в нем, если данные не валидны - не отправлять форму.
options берутся из дата атрибутов, можно динамически изменять значения атрибутов `data-width / data-height`, можно через параметр svg брать высоту/ширину контейнера и подставлять ее, с ходу больше не подскажу. Если с JS совсем дела не имели, то, думаю, не стоит за это и браться =)
Не похоже, что ошибка именно в этой строчке кода.
document.querySelector() возвращает null, если в документе не было найдено ни одного элемента, вот и метод .classList не отрабатывает на нем. На счет id верно отметили, он один на каждой кнопке, отличается только дата атрибут?
x333, бабель на replit счудил немного, на ноде 1, 2, все верно). Но я все же считаю, что этот код даже как учебное пособие не годится. Поменяй var на let, интепретатор сразу заругается и никаких конфузов не будет =)
Вот что говорит repl, devtools хрома с ним не согласен, "чудеса". Но все же код максимально грязный, на уровне модуля глобальная переменная z через let, внутри функции параметр с тем же наименованием, внутри создание новой переменной с тем же именем уже через var, стоит ли вообще на такой код смотреть дольше секунды =)
Сергей Николаевич, никаких танцев не нужно, node >= 13, в package.json прописываешь "type": "module", используешь es6 импорты без проблем, бабель может пригодиться только для eslint, и, разумеется, для некоторых новых фишек вроде pipeline, но это уже совсем другая история =)
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.