从 Array.prototype.indexOf.call 中排除某些元素
Excluding certain elements from Array.prototype.indexOf.call
var el = clickedElement;
var chl = el.closest('li');
var prt = chl.parentNode;
var idx = Array.prototype.indexOf.call(prt.children, chl);
我正在使用此代码从父节点获取 clickedElement 的索引号。它大部分时间都有效。我希望能够从索引号中过滤掉一些元素
例如..
li.zero
li.first
h2
li.second
如果我尝试使用此代码获取 li.second 元素作为索引 2,它会给出索引“3”,因为中间有 h3 标记。
我怎样才能从计数中排除某些元素?
您可以使用 Array.prototype.filter
方法。
它可能看起来像这样:
var idx = Array.prototype.indexOf.call(
Array.from(prt.children)
.filter(domNode => domNode.tagName.toLowerCase() === "li"),
chl
);
现在您将只检查列表项元素的索引。
var el = clickedElement;
var chl = el.closest('li');
var prt = chl.parentNode;
var idx = Array.prototype.indexOf.call(prt.children, chl);
我正在使用此代码从父节点获取 clickedElement 的索引号。它大部分时间都有效。我希望能够从索引号中过滤掉一些元素
例如..
li.zero
li.first
h2
li.second
如果我尝试使用此代码获取 li.second 元素作为索引 2,它会给出索引“3”,因为中间有 h3 标记。 我怎样才能从计数中排除某些元素?
您可以使用 Array.prototype.filter
方法。
它可能看起来像这样:
var idx = Array.prototype.indexOf.call(
Array.from(prt.children)
.filter(domNode => domNode.tagName.toLowerCase() === "li"),
chl
);
现在您将只检查列表项元素的索引。