Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何找到具有类似绝对位置的元素?_Javascript_Jquery - Fatal编程技术网

Javascript 如何找到具有类似绝对位置的元素?

Javascript 如何找到具有类似绝对位置的元素?,javascript,jquery,Javascript,Jquery,在下面的代码中,有三个图像位于同一位置。图像的位置从数据库中检索,每次刷新页面时图像都会发生变化 如何查找和选择与jQuery/JavaScript具有类似绝对位置的元素?我想更改重叠图像的位置 <img style="position:absolute; top:249.93px; left:291.056px;"> <img style="position:absolute; top:123.44px; left:291.056px;"> <img style=

在下面的代码中,有三个图像位于同一位置。图像的位置从数据库中检索,每次刷新页面时图像都会发生变化

如何查找和选择与jQuery/JavaScript具有类似绝对位置的元素?我想更改重叠图像的位置

<img style="position:absolute; top:249.93px; left:291.056px;">
<img style="position:absolute; top:123.44px; left:291.056px;">
<img style="position:absolute; top:249.93px; left:291.056px;">
<img style="position:absolute; top:152.281px; left:582.871px;">
<img style="position:absolute; top:151.803px; left:365.156px;">
<img style="position:absolute; top:249.93px; left:291.056px;">

基本上,我创建了2个循环,1个循环遍历所有元素,第二个循环遍历所有其他元素,以便我们可以比较位置。 使用此代码:

var arr = document.getElementsByTagName('img');
for(i=0; i<arr.length; i++) {
    console.log(arr[i]);
    for(j=0; j<arr.length-1; j++) {
         if((arr[i].offsetTop == arr[j].offsetTop) && (arr[i].offsetLeft == arr[j].offsetLeft)) { 
            alert('top: ' + arr[i].offsetTop + ' left: ' + arr[j].offsetLeft);
        }
    }
}
var arr=document.getElementsByTagName('img');

对于(i=0;i基本上,我创建了2个循环,1将遍历所有元素,第二个是遍历所有其他元素,以便我们可以比较位置。 使用此代码:

var arr = document.getElementsByTagName('img');
for(i=0; i<arr.length; i++) {
    console.log(arr[i]);
    for(j=0; j<arr.length-1; j++) {
         if((arr[i].offsetTop == arr[j].offsetTop) && (arr[i].offsetLeft == arr[j].offsetLeft)) { 
            alert('top: ' + arr[i].offsetTop + ' left: ' + arr[j].offsetLeft);
        }
    }
}
var arr=document.getElementsByTagName('img');

对于(i=0;i首先,您可以为要查询的所有元素分配一个类(比如“elementClass”)

然后,您可以在具有相似位置值的位置属性上对结果进行分组(您可以编写util方法,或者如果需要,可以使用linq.js)。分组的优点是,您可以检查组计数,如果需要,还可以执行更多逻辑操作


希望有帮助!

首先,您可以为要查询的所有元素分配一个类(比如“elementClass”)

然后,您可以在具有相似位置值的位置属性上对结果进行分组(您可以编写util方法,或者如果需要,可以使用linq.js)。分组的优点是,您可以检查组计数,如果需要,还可以执行更多逻辑操作


希望有帮助!

因为您只想更改重叠图像的位置, 比较两幅图像的顶部和左侧就足够了。 例如:

var-imglist=document.getElementsByTagName('img');
如果(imglist.length>1){
var distance=1.5;//更改该值
对于(变量i=0;i如果(Math.abs(t1-t2),因为您只想更改重叠图像的位置,
比较两幅图像的顶部和左侧就足够了。
例如:

var-imglist=document.getElementsByTagName('img');
如果(imglist.length>1){
var distance=1.5;//更改该值
对于(变量i=0;i如果(Math.abs(t1-t2)有两个建议。(1)尝试搜索“javascript冲突检测”(javascript collision detection),(2)也许可以完成这项工作。两个建议。(1)尝试搜索“javascript冲突检测”(javascript collision detection),(2)也许我会做这项工作。为什么不解释你的答案,而不仅仅是提供代码呢?是的,我注意到在我发布代码后,sheesh:PI重新阅读了我的评论…对此感到抱歉。我只是认为解释你提供的内容会有所帮助。然后像我这样的人可以从你的方法中学到一两件事。别担心,你是对的,我应该这样做e从一开始就提供了一个解释。为什么不解释你的答案,而不仅仅是提供代码呢?是的,我注意到在我发布代码后,sheesh:PI重新阅读了我的评论…对此感到抱歉。我只是认为解释你提供的内容会有所帮助。然后像我这样的人可以从你的方法中学到一两件事。不用担心,你是好的,我应该从一开始就解释清楚。很好。谢谢。很好。谢谢。
var results = [];
var elements = document.getElementsByClass('elementClass')
for(int i =0 ; i< elements.length;i++)
{
   var eleResult = {};
   eleResult.id = elements[i].id;
   eleResult.position = elements[i].position();
   results.push(eleResult);
}
var imglist = document.getElementsByTagName('img');
if (imglist.length > 1) {
    var distance = 1.5; // change the value 
    for (var i = 0; i < imglist.length; i++) {
        for (var j = i + 1; j < imglist.length; j++) {
            var t1 = imglist[i].style.top.replace('px', '');
            var l1 = imglist[i].style.left.replace('px', '');
            var t2 = imglist[j].style.top.replace('px', '');
            var l2 = imglist[j].style.left.replace('px', '');
            if (Math.abs(t1 - t2) <= distance && Math.abs(l1 - l2) <= distance) {
                // imglist[i] && imglist[j] have similar or the same position
                // TODO what you want
            }
        }
    }
}