Сравнить ссылки между собой
Подскажите, пожалуйста, как сравнить ссылки между собой. Задача такая. Есть список ссылок в html. При вводе пользователем новой ссылки надо сравнить, есть ли такая уже в html. Почему то постоянно в консоль выдает, что такой ссылки нет, даже если вводить уже существующую. Вводить надо в правый инпут в разметке и нажать на кнопку "Добавить".
https://codepen.io/Viacheslav_Demchenko/pen/PoBEzMy |
DVV,
js не умеет в телепатию, значение value надо получать непосредственно перед сравнением, перенесите получение данных в функцию, иначе в text и link всегда будет пусто. |
|
DVV,
нужна переменная -- цикл должен изменить эту переменную, если будет совпадение, и остановится -- после цикла если переменная не изменилась -- создаётся новый элемент. |
DVV,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<div id="linkContainer">
<a data-href="https://link1" class="js-additional-link">Ссылка 1</a>
<a data-href="https://link2" class="js-additional-link">Ссылка 2</a>
</div>
<input type="text" id="text" value="есть такая">
<input type="text" id="link" value="https://link1">
<button id="add">Добавить</button>
<script>
const btnAdd = document.getElementById('add');
const linkContainer = document.getElementById('linkContainer');
const txt = document.getElementById('text');
const lnk = document.getElementById('link');
function checLinksForMatches() {
const boxLinkNames = document.querySelectorAll('.js-additional-link');
const text = txt.value;
const link = lnk.value;
if(!text || !link) return;
let add = true;
for (let mainLink of boxLinkNames) {
if (mainLink.dataset.href === link) {
console.log('равна');
add = false;
break;
}
}
if (add) {
console.log('Не равна');
const newLink = document.createElement('a');
newLink.dataset.href = link;
newLink.textContent = text;
newLink.classList.add('js-additional-link');
linkContainer.append(newLink);
txt.value = '';
lnk.value = '';
}
}
btnAdd.addEventListener('click', checLinksForMatches);
</script>
</body>
</html>
|
Спасибо большое
|
| Часовой пояс GMT +3, время: 10:42. |