Javascript 如何找到z索引最大的元素?

Javascript 如何找到z索引最大的元素?,javascript,css,z-index,Javascript,Css,Z Index,我有很多动态创建的元素,只要它得到z-Index++,那么最新的元素随时都在顶部。当其中一个被点击时,他得到了他的z指数max+1。所以我需要得到元素,也就是在上面,我怎么能做到呢 仅限本地JS。谢谢不要试图找到它-您需要迭代所有DOM。在动态创建它们时,只需保存对它的引用,并在每次更新它。或者只需将当前最高的z-index值存储在max变量中 假设仅在“样式”属性中应用z索引 var elems = document.body.getElementsByTagName("*"); var la

我有很多动态创建的元素,只要它得到z-Index++,那么最新的元素随时都在顶部。当其中一个被点击时,他得到了他的z指数max+1。所以我需要得到元素,也就是在上面,我怎么能做到呢


仅限本地JS。谢谢

不要试图找到它-您需要迭代所有DOM。在动态创建它们时,只需保存对它的引用,并在每次更新它。或者只需将当前最高的
z-index
值存储在
max
变量中

假设仅在“样式”属性中应用z索引

var elems = document.body.getElementsByTagName("*");
var largest;
var check = 0;
for(i=0;i<elems.length;i++){
    if(elems[i].style.zIndex > check){
        check = elems[i].style.zIndex;
        largest = elems[i];
    }
}
// largest is the element
// check is the z-index value of the element with largest z-index
var elems=document.body.getElementsByTagName(“*”);
var最大;
var检查=0;
对于(i=0;i检查){
check=elems[i].style.zIndex;
最大=元素[i];
}
}
//最大的是元素
//check是具有最大z索引的元素的z索引值

在诸如chrome和safari这样的webkit浏览器中,获取元素的计算样式似乎是一个问题,因为它返回自动,这是一个主要问题,因为chrome现在是一种流行且广泛使用的浏览器。因此,现在我建议,如果您想这样做,请在样式属性中应用z索引,直到错误被修复为止

这是最佳解决方案

$(function(){
    var maxZ = Math.max.apply(null,$.map($('body > *'), function(e,n){
           if($(e).css('position')=='absolute')
                return parseInt($(e).css('z-index'))||1 ;
           })
    );
    alert(maxZ);
});

重复:你说的存储是什么意思?这很聪明,我喜欢这个想法,但我不认为在不迭代DOM的情况下保持精确的z索引变量是可能的。OP说他正在创建一些动态元素,但我们不知道在第一个添加的元素之前有多少个…@BASILIO:动态创建元素时使用的机制与
z-Index++
相同,但我不知道如何通过设置来保持精确的z-Index。@BASILIO:程序太多了逻辑。不要依赖于domcss值,而是为它构建一个数据模型。例如,你应该有一个窗口堆栈(数组),你只需要
pop()
就可以获得并关闭最上面的窗口。虽然这段代码可能会回答这个问题,但提供关于如何和/或为什么解决这个问题的附加上下文将提高答案的长期价值。