Извините, сложно придумать название для этого. Я все еще новичок в JavaScript, и что-то меня смущает.

Вот мой код

function getRandom() {
  document.getElementById('divtest').innerHTML = (Math.floor(Math.random()* 20))
}

document.getElementById('buttontest').onclick = getRandom

Поэтому обычно при вызове функции где-то в документе или даже при добавлении onclick = 'myFunction ()' прямо в html мне нужно написать myFunction () с paranthese.

Но здесь, когда я делаю .onclick для getElementById, мой код не работает, если я пишу = getRandom (), он должен быть = getRandom, как показано в моем фрагменте кода.

Почему это?

Спасибо!

2
oehaut 29 Авг 2017 в 14:56

3 ответа

Лучший ответ

Делая () вы вызываете функцию. В вашем случае, если вы добавите (), то вы вызываете getRandom, и результат undefined будет присвоен обработчику событий onclick. Итак, вы хотите назначить саму функцию. Рассмотрим пример:

var func = function () { return 2 }
console.log(func) //=> ƒ () { return 2 }
console.log(func()) //=> 2
2
Danil Speransky 29 Авг 2017 в 12:05

В Javascript вы передаете ссылку на функцию, а не вызываете ее (что добавит возвращаемое значение функции в качестве обратного вызова).

Принимая во внимание, что при определении функции обратного вызова в HTML вы записываете полный вызов в атрибут элемента HTML.

2
neuhaus 29 Авг 2017 в 12:00

Ваш onClick является своего рода "указанием" на функцию, которая содержит код, который должен быть запущен при обнаружении события click для этого элемента. Это не обычный «вызов» функции, где вы получите какое-то значение в качестве возврата. Там вы бы использовали скобки. Здесь, однако, вы устанавливаете функцию в качестве обработчика для события click.

0
Debanik Dawn 29 Авг 2017 в 12:00