@allvis

Почему функция раскрытия формы при нажатии кнопки работает некорректно?

При запуске обычного файла .html - всё работает стабильно:
Нажимаю на кнопку - раскрывается форма.

При запуске app.js (с сервером базы данных mysql) - захожу на localhost:1488 и почему-то сразу же видна кнопка и форма.
Что мне необходимо сделать, чтобы всё работало стабильно? И подскажите как закрыть форму, нажав на эту же кнопку.

HTML
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="stylesheet" href="Style.css">
    <script src="../app.js"></script>
    <title>Заполнение формы</title>
  </head>
  <body>
  <button onclick='openForm()'>Показать форму</button>
  <div id='form-wrap'>
    <form action="/save" method="POST">
      <fieldset>
        Пункт проката:
        <select name="town" id="s1">
          <option value="k1">Проспект Ленина 20</option>
          <option value="k2">Зайцева 13</option>
        </select>
        <br/>
        <p>
          Выберите дату получения:
          <input
            type="date"
            name="data"
            value="2021-12-14"
            max="2021-12-29"
            min="2021-12-14"
          />
        </p>
        <p>
          Выберите время для получения:
          <input
            type="time"
            name="times"
            value="07:00"
            min="7:00"
            max="21:00"
          />
        </p>
        <br />
        <label for="name">Имя: </label>
        <input type="text" id="name" name="name" />
        <br />
        <label for="tel">Телефон (Пример: 89200243522): </label>
        <input type="text" id="tel" name="tel" />
        <br />
        <input type="submit" value="Зарезервировать велосипед" />
      </fieldset>
    </form>
  </div>
  <script>
  const formWrap = document.getElementById('form-wrap');
  function openForm() {
  formWrap.classList.add('open');
  }
  </script>
  </body>
</html>


JS app.js
import mysql from "mysql";
import express from "express";
import { join, dirname } from "path";
import { fileURLToPath } from "url";
import bodyParser from "body-parser";

const getAbsolutePath = (relativePath) => {
  return join(dirname(fileURLToPath(import.meta.url)), relativePath);
};

const app = express();

//если строки или массивы, то может анализировать только входящий объект запроса
app.use(bodyParser.urlencoded({ extended: false }));

// Получает информацию о users.html
app.get("/", (_, response) =>
    response.sendFile(getAbsolutePath("./layout/users.html"))
);
app.get('/ses', function (req, res) {
  res.send('GET request to the homepage');
});
// передаёт информацию
app.post("/save", (request, response) => {
  saveMySuperForm(request.body).then(
      () => response.redirect("/"),
      (err) => response.send(`Unknown err, suck. Try again. : ${err}`)
  );
});

const connection = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "db",
});

export const saveMySuperForm = async ({ town, data, times, tel, name }) => {
  const query =
      "INSERT INTO reg (`town`, `data`, `times`, `tel`, `name`) VALUES (?, ?, ?, ?, ?)";

  return new Promise((resolve, reject) => {
    connection.query(query, [town, data, times, tel, name], (err, result) => {
      if (err) return reject(err);
      resolve(result);
    });
  });
};

app.listen(1488, () => console.log("open: http://localhost:1488"));


CSS
#form-wrap {
    opacity: 0;
    transition: opacity .5s;
}

#form-wrap.open {
    transition: opacity .5s;
    opacity: 1;
}


Скрины открытия формы через user.html:
61ba4dae6a7c0490530849.jpeg
61ba4db64c1fb505057954.jpeg

Скрин через app.js (с сервером базы данных) на localhost:1488
61ba4dde1c93b461607633.jpeg

Возможно я что-то не знаю, только начинаю изучать всё. Не судите меня строго, поясните в чём ошибка и как её исправить?
  • Вопрос задан
  • 318 просмотров
Пригласить эксперта
Ответы на вопрос 1
altentaller
@altentaller
Попробуйте вот так: https://codepen.io/altentaller/pen/LYzWmmB

Добавьте id для кнопки:
<button id='openFormBtn'>Показать форму</button>

А потом событие на клик по этой кнопке:
const formWrap = document.getElementById('form-wrap');  
const openFormBtn = document.getElementById('openFormBtn');

openFormBtn.onclick = function() {      
      formWrap.classList.toggle('open');
}
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
28 нояб. 2024, в 21:25
5000 руб./за проект
28 нояб. 2024, в 18:46
3000 руб./за проект
28 нояб. 2024, в 17:46
10000 руб./за проект