Когда вы описываете обработчик вот так:
element.onclick = somefunction();
То в момент объявления вызывается функция
somefunction и обработчику присваивается лишь её результат, а не сама функция.
В данном случае верное присвоение:
element.onclick = somefunction;
Но таким способом невозможно передать параметр.
Поэтому, используется замыкание для вызова нужной функции с параметрами:
element.onclick = function() {
somefunction(1);
}