我如何获得所选元素或元素[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>
答案 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));