如何在不知道其值的情况下获取javascript中的数组索引

时间:2011-05-02 06:15:09

标签: javascript arrays

我正在创建一个文本框数组。并且每个框都有相应的del和edit选项。

 for(i=0;i<5;i++)
    {
    <input type='text' id='pp_insti' name='pp_insti[]' value='"+institute+"' style='display:none;'>
    <input type='button' class='edit-button' id='pp_edit name='pp_edit[]' onclick='pp_edit();'/>
<input type='button' class='del-button' id='pp_del name='pp_del[]' onclick='pp_del();'/>
    }

我应该为pp_edit传递什么值的索引,所以我知道要编辑哪个pp_inst []。

任何人都可以帮忙..谢谢

2 个答案:

答案 0 :(得分:0)

您尝试使用相同的IDpp_insti)创建多个文本框。这是不允许的。

相反,您可以根据pp_insti_1的值为其提供pp_insti_2i等ID。然后,您可以将i的值传递给编辑和删除功能,以便能够找到感兴趣的文本框。

答案 1 :(得分:0)

您不需要传递值,因为onclick处理程序在自动传递给它的情况下运行。因此,将pp_edit()的函数定义更改为pp_edit(ev),然后在函数内部使用elem=ev.target,其中elem将是单击的DOM元素。

或者,您可以将this关键字传递给每次调用pp_edit:onclick='pp_edit(this);,然后定义pp_edit:pp_edit(obj)。现在在pp_edit中,obj引用了被点击的元素。

第三种方法是以编程方式设置onclick处理程序,而不是内联:

for(....){
  elem=document.createElement('...');
  elem.onclick=pp_edit;
}

现在,当调用pp_edit时,它将位于被点击元素的上下文中,而在pp_edit中,this关键字将引用被点击的元素。

注意:正如另一位用户指出的那样,您的代码无效,但我假设您发布了这样的方式来表达您的观点。如果没有,您肯定需要查找document.createElement()等函数。