Ответы пользователя по тегу JavaScript
  • Как обработать ошибку выборки элемента (что делать если элемент не найден)?

    @LazarchukNazar Автор вопроса
    Джаваскриптизер
    Вот что у меня получилось в итоге. Вроде всё правильно понял, нет?
    import { CompanyDbModel } from 'db/models';
     
    class DbRowNotFoundError extends Error {}
    
    // где-то дальше в асинхронной функции
    try {
      const company = await CompanyDbModel.getById(228);
    } catch (err) {
      if (err instanceof DbRowNotFoundError) {
        return console.log('Поля с таким id в таблице нет');
      }
    }
    Ответ написан
  • Как отменить функцию при нажатии на другую кнопку?

    @LazarchukNazar
    Джаваскриптизер
    Смотри, тут такой нюанс, что твои функции onClick () и startTimer () вызывают побочные эффекты, а именно взаимодействуют с объектом window.
    Поэтому, все таймеры, которые ты вызываешь, необходимо хранить в переменные. Также, перед уничтожением компонента (componentWillUnmount), необходимо очищать их через clearTimeout / clearInterval.
    А кнопка "назад" должна делать переход в другой компонент или очищать таймеры хотя бы
    Ответ написан
    Комментировать
  • JS на сервере, что имеют ввиду?

    @LazarchukNazar
    Джаваскриптизер
    Суть в том, что очень много проектов могут быть использованы ТОЛЬКО на Front (клиенте), потому что в коде проекта есть зависиммости браузера Window API такие как fetch, navigator, location, document и другие.
    Этот проект может использоваться и на фронте, и на сервере, по этому там так написали
    Ответ написан
    Комментировать
  • Как сделать редактирование профиля в окне?

    @LazarchukNazar
    Джаваскриптизер
    Для начала, в форму необходимо добавить поля для редактирования в форму и заполнить их атрибут defaultValue через JS:
    <form class="form" id="form">
                <button class="profile__buttonClose"></button>
              
              <label>
                Имя
                <input type="text" name="firstname"/>
              </label>
              <label>
                Описание
                <input type="text" name="description"/>
              </label>
    
              
                <button class="form__sumbit-button" type="submit">
                    <h3 class="form__save">Сохранить</h3>
    
                </button>
            </form>

    document.querySelector('input[name="firstname"]').defaultValue = 'Старое значение поля Firstname'
    document.querySelector('input[name="description"]').defaultValue = 'Старое значение поля Description'

    Далее, необходимо сделать нужный запрос. Если перезагрузка сайта нужна, тогда просто указываем адресс в атрибутах
    <form action="..." method="..." ... >. Но если нужен асинхронный запрос, тогда делаем его через JS (в таком случае это называют AJAX), для этого можно найти сотни-тысяч примеров на codepen
    document.querySelector('form').addEventListener('submit', (e) => {
      e.preventDefault();
      const firstname = document.querySelector('input[name="firstname"]').value;
      const description= document.querySelector('input[name="description"]').value;
      fetch('....', { body: JSON.stringify({ firstname, description}) }) // как-то так примерно, тут от ситуации
    });
    Ответ написан
  • Как сделать, чтобы при скролле активным элементом оставался только один?

    @LazarchukNazar
    Джаваскриптизер
    Для этого нужно делать classList.remove('active') для других елементов.
    Я бы для этого поставил условие, например, если targetPosition.bottom меньше (или targetPosition.top больше) чем у других елементов, то елемент должен оставаться видимым
    Ответ написан
    Комментировать