带参数的绑定事件

时间:2012-02-16 09:29:32

标签: javascript javascript-events event-handling

我试图调用一个接受带元素的onFocus事件参数的函数。另外,我试图将onFocus事件处理程序与该表单的所有元素绑定。这是我的代码。

<!--HTML Code-->
<form name="form1" id="form1">
<input type="text" name="name"/>
<input type="text" name="age"/>
<input type="text" name="gender"/>
<textarea id="cmt" multiline="multiline"></textarea>
</form>

以下是javascript代码:

var f=document.getElementById("form1");
for(i=0;i<f.length-1;i++)
{
f.elements[i].onFocus=help(i);
}

function help(i)
{
Var help=new Array("Help for name","Help for age", "help for gender");
document.getElementById("cmt").value=help[i];
}

此代码无效。我已经尝试了区分大小写的所有变体,所以如果答案与此相关,请不要回答。此代码不会将事件处理程序与元素绑定并调用函数帮助3次,并且将textarea的值设置为i的最终值。谢谢

1 个答案:

答案 0 :(得分:0)

您的代码中存在一些错误。

  1. 事件处理程序名称为“onfocus”,而不是“onFocus”。

  2. 在将其分配给“onfocus”事件处理程序时,您正在调用帮助,而不是像“onfocus = help”那样传递名称。

  3. 你不能通过这种方式将参数分配给onfocus来传递帮助函数的参数。你必须为此目的使用闭包。但这将更加令人困惑,而且不能正确解决您的要求。因此,您可以使用帮助功能中的浏览器传递的事件对象来检查目标元素。

  4. 这是jsfiddle的链接。我希望它会对你有所帮助。 http://jsfiddle.net/parth1403/N9t5J/