如何在不更改DOM的情况下获取javascript中的标记位置
How to get tag location in javascript without changing the DOM
假设我有以下代码:
<body>
<a>1</a>
<a>2</a>
</body>
<script>
var as = document.getElementByTagName('a');
for(var i=1; i<=as.length; i++) {
as[i].onclick = function(){
alert(i);
}
}
</script>
当我点击任何一个a
标签时,它会提醒2!我知道为什么,但我该怎么通过呢?
需要添加一些闭包来保存i的值,因为在循环完成并且i的值改变之后,将调用onlick函数
as[i].onclick = (function(i2){
return function(){
alert(i2);
};
})(i);
这是一个作用域问题。您的for
循环将在注册任何单击之前完成,因此i
将始终为2
。您可以通过使用功能性forEach
循环来避免这种情况,该循环将保留您的范围:
var as = document.getElementsByTagName('a');
[].forEach.call(as, function (el, i) {
el.onclick = function(){
alert(i);
}
})
这将为您提供html中标记的当前位置,您可以使用以下代码:
$('a').on('click',function(){
console.log($(this).index());
});
相关文章:
- 使用Javascript获取所选选项ID
- 可以't使用JavaScript获取width属性
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- Javascript获取上一个元素的内容
- 使用Javascript获取Twitter访问令牌
- 在不同的文件中使用Javascript获取表单数据
- 如何用javascript获取谷歌地图的经度和纬度
- 使用javascript获取表的td值
- 如何使用JavaScript获取当前URL
- 如何在谷歌网站中使用javascript获取当前页面的网址
- Javascript获取所有锚链接的索引
- 如何使用javascript获取从指定文件夹创建的所有文件的名称、大小、类型和日期
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 如何使用javascript获取下一个/转发url
- 需要使用javascript获取输入文本,然后将其添加到句子中
- 使用JavaScript获取Gridview单元格值
- 使用javascript获取跨度的文本
- 如何使用Javascript获取POST请求填充的元素的值
- JavaScript-获取数据属性的值返回未定义的值
- Javascript:获取“;FORM”;它是在.html到外部.js文件中创建的