Почему в некоторых случаях функцию события нужно обвертывать в анонимную функцию
Делал это задание и создал свою функцию
function count(quantity, period, capitalization) { if (quantity.charAt(0) == 0 || quantity < 0) return; if (capitalization) { var sum = quantity * Math.pow(1.12, period / 12); } else { var sum = +quantity + quantity * 0.12 * period / 12; } if (!sum) return; was.innerHTML = quantity; will.innerHTML = sum; willGraph.style.height = sum / quantity * 100 + 'px'; } Так вот когда я вешаю функцию на событие change инпута, вот так(инпут.onchange = count(передаю параметры)) то всё работает нормально. Но когда вешаю функцию на событие change селекта, то для того что бы оно заработало функцию привязывать к событию нужно обернув в анонимную функцию, вот так(селект.onchange = functio() { count(передаю параметры) }) Подскажите пожалуйста в почему так происходит? |
Цитата:
<input> <script> function f(a) { alert(a); } document.body.children[0].onchange = f('text'); </script> Если возвращается функция, то всё нормально <input> <script> function f(a) { alert(a); return function () {f(a)} } document.body.children[0].onchange = f('text'); </script> |
bes, то есть если функция не возвращает функцию то её нужно обвертывать что бы работало? :)
|
обработчиком назначается функция, поэтому функцию и нужно присваивать, функцию с параметрами проще всего передавать именно таким образом, так как скобки () - приводят к вызову функции
|
Часовой пояс GMT +3, время: 06:37. |