@letProgrammer

Как прописать проверку для защиты от дублирования данных?

На HTML-странице располагаются два элемента: -input- с идентификатором "fieldForData" и событийная кнопка -button- . Идея такая, что при вводе данных в поле -input- , после нажатия кнопки данные из поля (input.value) должны быть внесены в созданный посредством JS элемент неупорядоченного списка. Вопрос следующий: как прописать некую защиту от дублирования, чтобы было проигнорировано действие кнопки -button- в случае попытки создания элемента -li- с данными, которые уже существуют в разметке?

var accessToInput = document.getElementById('fieldForData')
accessToInput.value = 'Enter here some text'
var actionButton = document.querySelector('button')
var ul = document.createElement('ul')
document.body.appendChild(ul)
actionButton.addEventListener('click', function(){
	console.log("You've just made a mouse click")
	var li = document.createElement('li')
	if(accessToInput.value !== "" && accessToInput.value.toUpperCase() !== li.textContent.toUpperCase()){
		li.innerHTML = accessToInput.value.toUpperCase()	
		ul.appendChild(li)
		accessToInput.value = ''		
	}
})


Хотел организовать проверку с помощью условного оператора. Первая удовлетворяет требованиям: при пустом поле -input- новые элементы списка создаваться не будут. Вторая (которая находится справа от логического оператора "И") видимо придумана и записана некорректно.
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
Seanyr
@Seanyr
Вот, допилил ваш вариант, чтобы работал:
let dataArray = [];
let someData = document.getElementById('fieldForData');

let ul = document.createElement('ul');
document.body.appendChild(ul);

let actionButton = document.querySelector('button');
actionButton.addEventListener('click', function() {
    let data = someData.value.toUpperCase();
    //если значение пустое или есть в массиве, то ничего не делаем
    if (!data || dataArray.indexOf( data ) != -1) return;
    dataArray.push(data);
    let li = document.createElement('li');
    li.textContent = data;
    ul.appendChild(li);
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
v3shin
@v3shin
Веб-шаман
Сохраняйте введенные данные в массив и перед вставкой проверяйте их наличие в этом массиве.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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