Добавление в список

Я хочу использовать javascript, чтобы добавлять все, что находится в текстовом вводе, в список всякий раз, когда пользователь нажимает кнопку. Пока это моя функция:

function add(){
    var form = document.getElementById('form')
    var email = form.elements.typer.value

    var select = document.getElementById('users')
    var option = document.createElement("option")
    option.text = email
    select.add(option)
}

Это работает, но вы можете добавлять один и тот же текст много раз. Как сделать программу так, чтобы пользователь не мог добавлять один и тот же текст много раз?

Вы можете проверить, есть ли уже текст внутри массива перед добавлением.

EmOwen 29.08.2018 21:51

Загляните в наборы

scrblnrd3 29.08.2018 21:52

Сначала вам нужно проверить значение опции. Если есть в опции выбора, вы должны игнорировать, иначе вы можете добавить значение.

Avanish Kumar 29.08.2018 21:58
stackoverflow.com/a/646329/1675954 (вместо alert добавить ..)
Rachel Gallen 29.08.2018 22:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
77
2

Ответы 2

Перед добавлением текста вы можете проверить, существует ли он в списке, используя include (). MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

Это вернет истину или ложь, в зависимости от того, присутствует ли значение в списке.

У вас может быть массив, в котором вы будете отслеживать все уже добавленные электронные письма. Затем, прежде чем создавать опцию для select, проверьте, найдена ли она в этом массиве, если нет, то добавьте, если да, то сообщите об этом пользователю.

См. Ниже код

var addedUsers = [];

function add(){
    var form = document.getElementById('form')
    var emailInput = form.elements.typer;
    let email = emailInput.value
    emailInput.value = "";

    if (addedUsers.indexOf(email) == -1){
      addedUsers.push(email)
      var select = document.getElementById('users');
      var option = document.createElement("option");
      option.text = email;
      select.add(option)
    } else {
      alert("This user is already in the list");
      emailInput.focus()
    }
}
<form id = "form">
  <input id = "typer"/>
  <button onclick = "add()" type = "button">Add</button>
</form>

<select id = "users"></select>

Спасибо, но у меня еще есть кнопка удаления. Можете ли вы это учесть?

Terabyte 29.08.2018 23:13

Это моя функция удаления:

Terabyte 29.08.2018 23:14

функция rem () {var form = document.getElementById ('form') var email = form.elements.typer.value var select = document.getElementById ('users') var options = select.options for (var i = 2; i <options.length; i ++) {if (email === options [i] .innerHTML) {select.remove (i) break}}}

Terabyte 29.08.2018 23:14

Пожалуйста, это другой вопрос. Закройте этот, пометив мой ответ как принятый, затем откройте новый вопрос с информацией, которую вы передали выше, а затем после создания этого нового вопроса нажмите кнопку share под своим новым вопросом и передайте мне ссылку здесь.

Calvin Nunes 29.08.2018 23:16

Другие вопросы по теме