【发布时间】:2016-01-20 20:38:55
【问题描述】:
我正在尝试获取类中元素的索引。例如,如果我有一个名为 myClass 的类,它有 5 个元素,并且第四个元素的 id 为 fourth,我想从该类中获取 #fourth 的索引号。
我尝试像这样使用indexOf:
var myClass = document.getElementsByClassName('myClass');
var fourth = document.getElementById('fourth');
console.log(myClass.indexOf(fourth));
但我收到一条错误消息:
未捕获的类型错误:myClass.indexOf 不是函数
代码片段
var myClass = document.getElementsByClassName('myClass');
var fourth = document.getElementById('fourth');
console.log(myClass.indexOf(fourth));
<div class="myClass"></div>
<div class="myClass"></div>
<div class="myClass"></div>
<div class="myClass" id="fourth"></div>
<div class="myClass"></div>
然后我尝试创建自己的函数来从类中获取索引:
function indexInClass(node) {
var className = node.className;
var num = 0;
for (var i = 0; i < className.length; i++) {
if (className[i] === node) {
return num;
}
num++;
}
return -1;
}
但是当我使用它时我会变得不确定。
如何获取类的索引?
代码片段
var myClass = document.getElementsByClassName('myClass');
var fourth = document.getElementById('fourth');
function indexInClass(node) {
var className = node.className;
var num = 0;
for (var i = 0; i < className.length; i++) {
if (className[i] === node) {
return num;
}
num++;
}
return -1;
}
console.log(myClass[indexInClass(fourth)]);
<div class="myClass"></div>
<div class="myClass"></div>
<div class="myClass"></div>
<div class="myClass" id="fourth"></div>
<div class="myClass"></div>
【问题讨论】:
-
“索引号”是什么意思?您在 DOM 节点上使用
indexOf... -
@Raffaele,
myClass是 DOM 节点的集合,而不是单个 DOM 节点。 -
不确定,但您可能需要遍历 myClass 并使用 .getattribute() 来检查当前元素是否具有“id”属性
-
我知道这是一个 Javascript 问题,但以防万一有人感兴趣,您可以使用 CSS 使用计数器 (Codepen demo) 执行类似的操作。当然,您只能显示结果,而不能在 javascript 中访问它。 (在this post 中,我展示了一个概念证明示例)
-
@Danield 哇!我不知道! CSS 比我想象的更强大!
Ani rotzeh lishol otcha shala. Ata yachol给我发电子邮件?我的电子邮件在我的 stackoverflow 个人资料中。
标签: javascript