@Esm322

Как получить текст из инпута?

Как получить текст из инпута? Есть такой код:

function createAddBlock() {
  const $addBlock = document.createElement('div');
  const $selectContacts = document.createElement('select');
  const $phoneOption = document.createElement('option');
  const $additionalPhoneOption = document.createElement('option');
  const $emailOption = document.createElement('option');
  const $vkOption = document.createElement('option');
  const $twitterOption = document.createElement('option');
  const $selectInput = document.createElement('input');

  $addBlock.classList.add('add-contact__contacts');
  $selectContacts.classList.add('add-contact__select');
  $selectInput.classList.add('add-contact__input');

  $phoneOption.textContent = 'Телефон';
  $phoneOption.value = 'phone';
  $additionalPhoneOption.textContent = 'Доп. тел.';
  $additionalPhoneOption.value = 'additional-phone';
  $emailOption.textContent = 'Email';
  $emailOption.value = 'email';
  $vkOption.textContent = 'Vk';
  $vkOption.value = 'vk';
  $twitterOption.textContent = 'Twitter';
  $twitterOption.value = 'twitter';
  $selectInput.placeholder = 'Введите данные контакта';

  $selectContacts.append($phoneOption, $additionalPhoneOption, $emailOption, $vkOption, $twitterOption);
  $addBlock.append($selectContacts, $selectInput);

  return {
    $selectInput,
    $addBlock,
  };
}

Данная функция создает блок, которая впоследствии используется здесь:

$btnAddContact.addEventListener('click', () => {
  $btnAddContact.insertAdjacentElement('beforebegin', createAddBlock().$addBlock)
})

Мне нужно получить value у $selectInput, чтобы потом value отображался при рендере данных, здесь:

$form.addEventListener('submit', function (event) {
  event.preventDefault();

  const client = {
    id: getID(dataClients),
    name: $inputName.value.trim(),
    surname: $inputSurname.value.trim(),
    lastname: $inputLastname.value.trim(),
    createDate: new Date(),
    changesDate: new Date(),
    contacts: createAddBlock().$selectInput.value,
  }

  $inputName.value = '';
  $inputSurname.value = '';
  $inputLastname.value = '';
  createAddBlock().$selectInput.value = '';

  dataClients.push(client);

  renderClients();
})

Но к сожалению, value не отображается. Пытался вынести инпут в глобальную область видимости, но тогда переставало работать событие кликом с добавлением блока.
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 1
XanXanXan
@XanXanXan
('beforebegin', createAddBlock().$addBlock)
contacts: createAddBlock().$selectInput.value,
createAddBlock().$selectInput.value = '';
Это три разных вызова функции, соответственно создаются 3 разных объекта, которые не связаны друг с другом.

$form.addEventListener('submit', function (event) {})
Здесь нужно искать нужный уже созданный элемент, чтобы получить его value.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы