从Javascript数组获取索引

时间:2016-12-25 17:32:15

标签: javascript php html arrays

我如何获得所选元素或元素[i]'的索引?在JavaScript中?我知道这是一个非常简单的问题,所以对购买书籍或课程的任何建议都将不胜感激。谢谢!

代码:

<html>
<body>
    <table>
    <tr id="subject"><?php 
    $subjects = array("IT","Programming","Networks");
    foreach($subjects as $key => $value) {
    echo "<td>"."<a href='index.php' class='column'>".$value."</a>"."</td>";
    }     
  ?></tr>
    </table>
</body>


<script type="text/javascript">

    var elems = document.getElementsByClassName('column');
    for (var i = 0; i < elems.length; i++) {
        elems[i].onclick = function () {
            console.log(this.innerHTML);
        };
    }

</script>

1 个答案:

答案 0 :(得分:1)

 var elems = document.getElementsByClassName('column'); 
 for (var i = 0; i < elems.length; i++) { 
 let a=i;//the magic happens
 elems[i].onclick = function () { 
console.log(a);
 }; 
 } 

请参阅闭包,让,ES6。

选项二(对于旧浏览器):

     var elems = document.getElementsByClassName('column'); 
 for (var i = 0; i < elems.length; i++) { 
 (function(){
 var a=i;
 elems[i].onclick = function () { 
console.log(a);
 }; 
 })();
 } 

您需要将索引放入处理程序范围,通过使用块作用域(让,第一个答案)或通过IIFE创建新作用域... (您需要为每个处理程序创建一个自己的作用域)

解决方案3: 设置dom对象id:

elems[i].id=i;
elems[i].onclick=function(){
  alert(this.id);
};

解决方案4: 动态获取索引:

alert(elems.indexOf(this));