如何使用Javascript获取表单中textfield数组的索引?

如何使用Javascript获取表单中textfield数组的索引?,javascript,dom,Javascript,Dom,我有一个包含十几个textfield元素的表单。其值的任何更改都应执行Javascript函数。直到现在我才知道该怎么做,但我无法检测触发函数的textfield的索引。我尝试了一些我在这里和那里看到的解决方案,但没有成功 <form action="" method="post" enctype="multipart/form-data" name="myforma1" target="_self" id="myforma1"> <input name="txtfield"

我有一个包含十几个textfield元素的表单。其值的任何更改都应执行Javascript函数。直到现在我才知道该怎么做,但我无法检测触发函数的textfield的索引。我尝试了一些我在这里和那里看到的解决方案,但没有成功

<form action="" method="post" enctype="multipart/form-data" name="myforma1" target="_self" id="myforma1">
<input name="txtfield" type="text" id="txtfield" onchange="detect_it(this);" value="name of person" size="20" maxlength="25" />
<input name="txtfield" type="text" id="txtfield" onchange="detect_it(this);" value="name of person" size="20" maxlength="25" />
<input name="txtfield" type="text" id="txtfield" onchange="detect_it(this);" value="name of person" size="20" maxlength="25" />

。。。


函数检测(oo)
{
警报('触发元素的索引为:'+oo.Index);
/*代码的其余部分*/
}

这里的问题是索引不是元素的属性。它可以有不同的网络索引,这取决于上下文,但您可以尝试 尝试以下方法:

    function detect_it(oo){
     var inputs = document.getElementsByTagName('input')
     for (var i = 0 ; i<inputs.length ; i++){
        if(oo == inputs[i]{
          alert('Index of triggered element is: ' + i);
        }   
    }
    //enter code here
    }
函数检测(oo){
var inputs=document.getElementsByTagName('input')

对于(var i=0;i,您可能不应该为所有输入提供相同的名称和id

但是,您仍然可以查找父节点,然后迭代父节点的子节点,直到找到要检索其索引的节点

尝试以下getIndex()函数:

<script>
var getIndex = function (node) {
    for (var i =0;i<node.parentNode.children.length;i++) {
        if (node.parentNode.children[i] === node) {
            return i;
        }
    }
}
function detect_it(oo) {
    alert('Index of triggered element is: ' + getIndex(oo));
}
</script>

var getIndex=函数(节点){

对于(var i=0;由于一个元素为输入,另一个元素为form@raam86我更正了我的代码段,但出现了一个错误。添加一个可用的小提琴。
node.parentNode.length
不正确。谢谢raam86,您的代码似乎是我想要的解决方案。只是有一个小错误,我更正了它,现在它可以正常工作了Chrome和FF.function detect_it(oo){var inputs=document.getElementsByName('txtfield')for(var i=0;i@LudusH很高兴知道。我更正了答案以反映解决方案
<script>
var getIndex = function (node) {
    for (var i =0;i<node.parentNode.children.length;i++) {
        if (node.parentNode.children[i] === node) {
            return i;
        }
    }
}
function detect_it(oo) {
    alert('Index of triggered element is: ' + getIndex(oo));
}
</script>