Почему в некоторых случаях функцию события нужно обвертывать в анонимную функцию
Делал это задание и создал свою функцию
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, время: 22:41. |