JavaScript:如何获取元素索引的名称?

时间:2017-05-23 06:18:54

标签: javascript

需要从元素数组中获取元素的索引号

<input type="button" name="test" value="test" onclick="getindex(this)"> <!--index 0-->
<input type="button" name="test" value="test" onclick="getindex(this)"> <!--index 1-->
<input type="button" name="test" value="test" onclick="getindex(this)"> <!--index 2-->
<input type="button" name="test" value="test" onclick="getindex(this)"> <!--index 3-->
...
<script>
function getindex(obj) {
    var i = obj.index; //here is wrong. How to get index?
}
</script>

4 个答案:

答案 0 :(得分:2)

更改页面时不易出现问题的方法是将值分配给数据属性:

<input type="button" name="test" value="test" onclick="getindex(this)" data-index="0"> 
<input type="button" name="test" value="test" onclick="getindex(this)" data-index="1"> 
<input type="button" name="test" value="test" onclick="getindex(this)" data-index="2"> 
<input type="button" name="test" value="test" onclick="getindex(this)" data-index="3"> 

然后从该数据属性中检索索引:

<script>
function getindex(obj) {
    var i = parseInt(obj.dataset.index,10);
}
</script>

答案 1 :(得分:1)

将一个名为index的属性添加到html按钮,然后尝试在按钮单击时访问它。你可以用它。

<input type="button" index='0' name="test" value="test" onclick="getindex(this)"> <!--index 0-->
<input type="button" index='1' name="test" value="test" onclick="getindex(this)"> <!--index 1-->
<input type="button" index='2' name="test" value="test" onclick="getindex(this)"> <!--index 2-->
<input type="button" index='3' name="test" value="test" onclick="getindex(this)"> <!--index 3-->

<script>
    function getindex(obj) {
        var i = obj.getAttribute('index');
    }
</script>

答案 2 :(得分:0)

因为元素本身对任何索引都不了解,所以不可能这样。解决此问题的另一种方法是动态创建按钮:

<script>
    for (var i = 0; i < 4; i++) {
      var onClick = function () {
        console.log(i);
      }

      var button = document.createElement('button');
      button.onclick = onClick;
      document.querySelector('body').appendChild(button); 
    }
</script>

答案 3 :(得分:0)

您无需添加属性...

here is a fiddle

<script type="text/javascript">
    function getindex(index) {
        alert(index);
    }
</script>

<input type="button" name="test" value="test" onclick="getindex(0)">
<input type="button" name="test" value="test" onclick="getindex(1)">
<input type="button" name="test" value="test" onclick="getindex(2)">
<input type="button" name="test" value="test" onclick="getindex(3)">