Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Функция Javasctipt работает без вызова?

Автор вопроса: Graham WilliamsОтветов: 1

Итак, в моем файле page.js всего 6 строк кода, и они следующие:

document.getElementById("desired").addEventListener("blur", gradeChange());
document.getElementById("calculate").addEventListener("click", gradeChange());

function gradeChange() {
    var dog = document.getElementById("desired").value;
    console.log(dog);
}

И в моей странице.html у меня есть:

<input id="desired" type="text">

и где-то еще:

<button id="calculate" type="button">Calculate</button>

Я думал, что это будет работать без кнопки, поэтому, когда я что-то набирал в текстовом поле, а затем покидал текстовое поле, это отображалось в журнале. Но ничего не появилось, поэтому я добавил кнопку, чтобы сделать ее более простой. Тем не менее, это ничего не сделало в журнале. Любая идея, почему ничего не появляется?

  • Вы вызываете функцию прямо здесь: gradeChange(). JavaScript сначала оценивает аргументы, поэтому, когда у вас есть foo(bar()), сначала вызывается bar, а его возвращаемое значение передается в foo. Felix Kling 19.12.2014
  • Ваш код на странице перед HTML. Если это так, переместите тег <script> ПОСЛЕ двух элементов, для которых вы пытаетесь вызвать .getElementById(). Элементы DOM должны быть загружены, прежде чем вы сможете запустить свой сценарий. jfriend00 19.12.2014

javascriptbuttonblurconsole

Ответы

Ответ 1 · рейтинг 5 · ateich

gradeChange() вызывает функциюgradeChange.

document.getElementById("desired").addEventListener("blur", gradeChange());
document.getElementById("calculate").addEventListener("click", gradeChange());

Изменить градациюChange() на градациюChange

document.getElementById("desired").addEventListener("blur", gradeChange);
document.getElementById("calculate").addEventListener("click", gradeChange);

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы