Функция asyncMsg вызывается сразу же при нажатии кнопки запуска запуска. Как изменить вызов, только когда пользователь нажимает кнопку нажатия на кнопку. Мне нужно передать 2 элемента данных в этот обратный вызов.Почему этот обратный вызов не называется асинхронно
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
function bindEvent(el, eventName, eventHandler) {
if (el.addEventListener){
el.addEventListener(eventName, eventHandler, false);
} else if (el.attachEvent){
el.attachEvent('on'+eventName, eventHandler);
}
}
function asyncMsg(data, fldid) {
alert("asynchronous message with param1=" + data + " param2=" + fldid);
}
function dohooking() {
var toinsert = "Duck";
var fldid = "10";
var btn = document.getElementById("hookee");
bindEvent(btn, 'click', asyncMsg(toinsert, fldid));
}
</script>
<title></title>
</head>
<body>
<input type="button" id="sethooking" value="start hooking" onclick="dohooking();">
<br />
<input type="button" id="hookee" value="press me">
<br />
</body>
</html>
Я могу видеть, как если бы я просто передать функцию как в:
bindEvent(btn, 'click', asyncMsg);
, то она называется асинхронно, но тогда, как я прохожу 2 параметра?
Примечание: при использовании привязки так, объект события будет передан на аргументы [2], вместо обычного первого аргумента. – bfavaretto