如何获取索引元素
How to get index element?
如何从元素中读取索引?示例:
我有代码:
<div class="a">
<span id="el">Yeah!</span>
<span class="span">1</span>
<span class="span">2MANO</span>
</div>
和javascript:var mySpan = document.getElementsByTagName("span")[0]; // it span id="el"
正常,
但是我如何从这个元素的跨度索引中读取
var span= document.getElementById("el"); // i should get index 0 but i cant do that
你说的是它在父节点中的位置:要做到这一点,请计算previousSibling
或previousElementSibling
(取决于你想计算其他类型的节点还是只计算元素(不是null
:的次数
计数所有节点类型:
function getIndex(node) {
var index = 0;
while (node.previousSibling) {
node = node.previousSibling;
++index;
}
return index;
}
console.log(getIndex(document.getElementById("el"))); // 0
console.log(getIndex(document.getElementById("el2"))); // 5, counts text nodes
<div class="a">
<span id="el">Yeah!</span>
<span class="span">1</span>
<span class="span" id="el2">2MANO</span>
</div>
仅计数元素:
function getElementIndex(node) {
var index = 0;
while (node.previousElementSibling) {
node = node.previousElementSibling;
++index;
}
return index;
}
console.log(getElementIndex(document.getElementById("el"))); // 0
console.log(getElementIndex(document.getElementById("el2"))); // 2, counts only elements
<div class="a">
<span id="el">Yeah!</span>
<span class="span">1</span>
<span class="span" id="el2">2MANO</span>
</div>
如果您通过getElementById
获取元素,您将无法获取。你需要参考父母,并通过父母子女获得其索引:
var nodes = Array.prototype.slice.call( document.getElementsByClassName('a')[0].children );
var span = document.getElementById('el');
var index = nodes.indexOf(span);
console.log(index); // 0
var span = document.getElementById('el2');
var index = nodes.indexOf(span);
console.log(index); // 1
<div class="a">
<span id="el">Yeah!</span>
<span id="el2">Yeah!</span>
</div>
您可以查看父节点及其子节点(使用ES6语法(:
const span = document.getElementById("el");
const idx = [...span.parentNode.children].findIndex(n => n === span);
以下是ES5中的替代方案:
idx = Array.prototype.slice.call(span.parentNode.children)
.reduce(function(result, node, i) {
return node === span ? i : result;
}, -1);
相关文章:
- 如何索引jquery中的每个元素
- 如何在z索引为auto的元素下堆叠
- 将一个元素放在具有相同z索引的其他元素前面
- 获取javascript中输入元素的索引
- 如何设置元素的z索引?JQuery、Javascript、CSS、HTML
- 已筛选jQuery集中元素的索引
- JavaScript-在不影响索引的情况下将元素插入数组
- 正在获取单击的元素相对于整个文档的索引
- 触发具有较低Z索引值的DOM元素的事件
- 获取页面上每个元素的Z索引
- 获取不同元素的索引
- 获取当前元素的索引并更改他的样式
- JQUERY 按钮返回到索引元素
- 获取在列表视图中具有特定首字母的索引元素
- 如何更改test.html中的索引元素
- 使用索引元素id时出现意外错误
- 删除数组中不存在的索引元素上的运算符行为
- 如何获取索引元素
- $index的元素变化,而使用过滤器如何获得正确的索引元素angularjs
- Javascript - 如何从 2D 数组中获取索引 [1] 元素的总和