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

Итак, в моем файле 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>

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


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


Ответы (1)


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);
person ateich    schedule 19.12.2014
comment
Я изменил это, и это не решило проблему. У меня такая же проблема, в журнале ничего не отображается. Хотя я ценю поправку. Что может заставить эту функцию не вызываться? - person Graham Williams; 19.12.2014
comment
попробуйте console.log('тест'); Ваша переменная собаки может быть нулевой. - person ateich; 19.12.2014
comment
Неважно, сейчас работает. Благодарю за быстрое исправление! - person Graham Williams; 19.12.2014
comment
Если это сработало для вас, не могли бы вы отметить это как ответ? :) - person ateich; 20.12.2014