2013-02-12 3 views
5

Я задаюсь вопросом, почему, как только страница загружается, вызывается функция btw_bijtellen(). Я хотел назвать его, нажав ...Функция javascript работает без вызова

var $ = function (id) { 
    return document.getElementById (id); 
} 

function btw_bijtellen() { 
    window.alert("we want to calculate something after clicking th button"); 
} 

$("bereken").onclick = btw_bijtellen(); 

ответ

13

Вы добавили (), который вызывает функцию для выполнения.

Например:

var myFunc1 = function() { 
    alert('Hello'); 
}(); // <---() causes self execution 

var myFunc2 = function() { 
    return 5 + 5; 
}; 

var some_value = myFunc2(); // <--- Again() causes execution (you'd expect this one) 

В вашем случае, как уже упоминалось в комментариях вы в основном говорит onclick, чтобы установить его значение для возвращаемого значения функции.

Если вы уроните (), он должен работать как следует.

+0

Кстати, для @bert, это означает, что ваш обработчик onclick назначен «undefined» - поскольку запуск этой функции, которая возвращает «undefined», присваивает этот результат onclick. –

+0

@Lloyd Итак, только круглые скобки при объявлении или вызове, все остальное (которое листы присваивают?) Без круглых скобок? – pwp

+0

Объявление да. Для назначения просто отбросьте их. – Lloyd

0

Ввод () после имени функции, как вы это называете.

Если вы хотите назначить btw_bijtellen на номер onclick, то удалите () из последней строки кода в вопросе.

С помощью () вы вызываете функцию и присваиваете ее возвращаемое значение - onclick. Поскольку эта функция не имеет оператора return, это значение будет undefined, которое не то, что вы хотите.

3

Если вы хотите, чтобы функция вызываемая по щелчку затем использовать

$("bereken").on('click', btw_bijtellen); 

Update (По запросу от WAO)

Если вам нужно передать аргумент, то вам нужно указать, как второй аргумент. $.on() получает данные в event обработчиком

$("bereken").on('click', {key1: value1, key2: value2, keyn: valuen}, btw_bijtellen); 

, где вы можете получить параметры из event.data

var function = btw_bijtellen(event) { 
    var data = event.data; 
    console.log(data); 

    var key1 = event.data.key1; 
    console.log(key1); // this will output value1 
} 

Есть читать по этой ссылке jQuery $.on() api

+0

Что делать, если вы хотите передать аргумент функции 'btw_bijtellen'? –

+1

@Wao: надеюсь, что обновленный ответ поможет вам – asifsid88