Я хочу использовать 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)
}
Это работает, но вы можете добавлять один и тот же текст много раз. Как сделать программу так, чтобы пользователь не мог добавлять один и тот же текст много раз?
Загляните в наборы
Сначала вам нужно проверить значение опции. Если есть в опции выбора, вы должны игнорировать, иначе вы можете добавить значение.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Перед добавлением текста вы можете проверить, существует ли он в списке, используя 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>Спасибо, но у меня еще есть кнопка удаления. Можете ли вы это учесть?
Это моя функция удаления:
функция 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}}}
Пожалуйста, это другой вопрос. Закройте этот, пометив мой ответ как принятый, затем откройте новый вопрос с информацией, которую вы передали выше, а затем после создания этого нового вопроса нажмите кнопку share под своим новым вопросом и передайте мне ссылку здесь.
Вы можете проверить, есть ли уже текст внутри массива перед добавлением.