2012-02-16 65 views
0

我试图调用一个函数,它接受元素的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的最终值。谢谢

+0

你或许正在寻找'f.children'? – 2012-02-16 10:53:01

+0

是的,但我只是在寻找表单元素。表单标签中的标签和td标签也将被称为子标签,但我只需要输入和textarea元素。这些元素可以提取属性。问题在于事件绑定。 – Sourabh 2012-02-16 14:06:21

回答

0

你的代码有一些bug。

  1. 事件处理程序的名称是 “聚焦状态”,而不是 “聚焦状态”。

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

  3. 你不能通过这种方式将参数分配给onfocus来帮助函数传递参数。你必须使用闭包来达到这个目的。但它会更混乱,不适合您的要求。因此,您可以使用帮助功能中的浏览器传递的事件对象来检查目标元素。

这里的jsfiddle的链接。我希望它能帮助你。 http://jsfiddle.net/parth1403/N9t5J/