igorperegudov
@igorperegudov
Frontend-developer

Почему document.getElementById('serachLink').value ничего не выводит?

var serachLink = document.getElementById('serachLink');
console.log(serachLink.value);

var serachLink = document.getElementById('serachLink').value;
console.log(serachLink);


Первый вариант отрабатывает, а второй почему то ничего не выводит, почему так?

var searchLink = document.getElementById('searchLink');
var searchBtn = document.getElementById('searchBtn');

searchBtn.addEventListener('click', function() {
    console.log(searchLink.value); //отрабатывает
});



var searchLink = document.getElementById('searchLink').value;
var searchBtn = document.getElementById('searchBtn');

searchBtn.addEventListener('click', function() {
    console.log(searchLink); //не отрабатывает
});

<input id="searchLink" type="text" class="link" placeholder="Вставьте ссылку">
<button id="searchBtn" type="button" class="btn">go</button>

в инпут ввожу - потом клацаю по кнопке
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
Negwereth
@Negwereth
lvivcss.com.ua
Во втором примере кода вы сохраняете изначальное значение поля value, которое в этот момент равняется пустой строке. При сохранении данных примитивных типов в переменную в неё копируется значение. Судя по всему, вы хотели получить прямую ссылку на это поле, и выводить значение по ней. В этом случае так не будет работать.

Чтобы получать значение из поля value, вам надо обращаться к полю объекта при каждом клике. Что вы можете закешировать, то есть сохранить ссылку, так это ссылку на элемент input, как и реализовано в вашем первом примере.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vshvydky
serachLink точно ид элемента серач? А не серч? Да и было бы неплозо сам тэг описать в вопросе. А то гадалок тут мало
Ответ написан
Ваш ответ на вопрос

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

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