Javascript 列中的哪一个是此元素

Javascript 列中的哪一个是此元素,javascript,html,dom,Javascript,Html,Dom,假设我有以下代码: <div id="container"> <div onclick="func(this)"></div> ... ... <div onclick="func(this)"></div> </div> 单击后,我需要函数func来获取: 1.调用onclick事件的div的索引。 2.容器中div的总数。假设func将此作为第一个参数接收,您只需遍历前面的同级,并计算出之前的索引数量 要获得总计数,只

假设我有以下代码:

<div id="container">
<div onclick="func(this)"></div>
...
...
<div onclick="func(this)"></div>
</div>
单击后,我需要函数func来获取: 1.调用onclick事件的div的索引。 2.容器中div的总数。

假设func将此作为第一个参数接收,您只需遍历前面的同级,并计算出之前的索引数量

要获得总计数,只需从父级获取.children的计数

function func(elem) {
    var idx = 0;
    var total = elem.parentNode.children.length;
     // --------v----note the assignment!
    while (elem = elem.previousElementSibling) {
        idx++;
    }
    console.log("index:", idx, " of:", total);
}
如果需要支持没有.previousElementSibling的旧浏览器,可以使用.previousSibling并测试节点类型是否为1

function func(elem) {
    var idx = 0;
    var total = elem.parentNode.children.length;
     // --------v----note the assignment!
    while (elem = elem.previousSibling) {
        if (elem.nodeType === 1)
            idx++;
    }
    console.log("index:", idx, " of:", total);
}

所有这一切都假设容器中没有其他应计数的元素。如果还有其他代码,则需要将它们从计数中筛选出来。

此代码将执行您需要的操作:

function func(el){
    // get the list of all element contained by the parent
    var list = el.parentElement.children, i;
    // get the index of the element
    for (i = 0; i<list.length;i++){
        if (list[i] == el) break;
    }
    // logging index and total childrencount to console (F12)
    console.log("children total: "+list.length);
    console.log("# of element: "+ ++i);
}​

6张反对票,但没有说明原因?我很好奇这个问题出了什么问题。人们无法解析这两个问题的英文,特别是第1点。没错,很难说出这里要问什么。我认为这是一个DOM问题,所以我添加了标签。虽然有点晚了,但是既然问题已经结束了,但是@oneat,也许你可以尝试澄清你的问题。我会编辑这个问题,但我不想假设太多。我会假设OP想要触发事件的div的索引,以及容器中div的总数。user1689607明白了。对不起,我的英语不好,我将重新编辑这个问题。