разница в функциональности javascript onclick

0

В чем разница между двумя верхними строками javascript здесь?

HTML:

<html>

    <body>

        <form>

            <input type="button" value="one" id="one" />
            <input type="button" value="two" id="two" />

        </form>

        <script type="text/javascript" language="javascript" src="example.js"></script>

    </body>

</html>

JavaScript:

document.getElementById('one').onclick = one();
document.getElementById('two').onclick = function() {two();}


function one(){
    alert('this pops up before the button is clicked. Afterwards, the button doesn\'t work.');
}

function two(){
    alert('this pops up appropriately when the button is clicked.');
}

Перед тем, как страница загрузится, Popone покажет, что кнопка становится непригодной. Всплывающее окно отображается, когда вторая кнопка нажата и работает надлежащим образом.

Теги:
onclick

1 ответ

0
Лучший ответ

Разница в том, как вы передаете функцию событию onclick. Когда вы делаете =one(); он немедленно оценивает функцию и выполняет ее. Когда вы выполняете function(){two();}, она ждет, пока щелчок не выполнит анонимную функцию, выполняющую two(); Если вместо этого вы делаете ="one();" то он должен работать одинаково.

  • 1
    Я не совсем уверен, что понимаю, не могли бы вы уточнить немного? Что вы подразумеваете под "анонимной функцией"?
  • 0
    «Анонимная функция» - это function(){two();} потому что она не получает имя. Компилятор "оценивает" это - и знает, как выполнить это для нажатия кнопки. Когда компилятор пытается оценить только one() он завершает его выполнение. Положить one(); в строку, как "one();" компилятор будет оценивать его только при нажатии кнопки.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню