【问题标题】:Binding event with parameters带参数的绑定事件
【发布时间】:2012-02-16 09:29:31
【问题描述】:

我正在尝试调用一个函数,该函数接受带有元素的 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 的最终值。谢谢

【问题讨论】:

  • 您是否在寻找f.children
  • 是的,但我只寻找表单元素。表单标签中的标签和 td 标签也将被称为它的子标签,但我只想要 input 和 textarea 元素。可以访问元素以提取属性。问题在于事件绑定。

标签: javascript javascript-events event-handling


【解决方案1】:

您的代码中有一些错误。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    相关资源
    最近更新 更多