Javascript 将变量设置为以同一类的所有div为目标

Javascript 将变量设置为以同一类的所有div为目标,javascript,html,jquery,css,Javascript,Html,Jquery,Css,使用QuerySelector选择类时,我会得到一个未捕获的错误 未捕获类型错误:b.getBoundingClientRect不是函数 在重叠处 有办法解决这个问题吗 功能重叠(a、b){ a=document.getElementById('char'); b=document.queryselectoral(“.敌军”); const rect1=a.getBoundingClientRect(); const rect2=b.getBoundingClientRect(); 常数isI

使用QuerySelector选择类时,我会得到一个未捕获的错误 未捕获类型错误:b.getBoundingClientRect不是函数 在重叠处 有办法解决这个问题吗

功能重叠(a、b){
a=document.getElementById('char');
b=document.queryselectoral(“.敌军”);
const rect1=a.getBoundingClientRect();
const rect2=b.getBoundingClientRect();
常数isInHoriztonalBounds=
rect1.xrect2.x;
常数为不确定界=
rect1.yrect2.y;
常数isOverlapping=isInHoriztonalBounds和isInVerticalBounds;
返回等重叠;

}
正如@Andreas在评论中指出的那样,ID应该是唯一的。使用时:

 b = document.getElementById('enemy');
系统将(最有可能)找到id敌人的第一个实例并在那里停止

如果你将所有敌人转化为职业敌人,那么你可以:

  let enemies = document.querySelectorAll('.enemy');
注意:这将为您提供一个使用class=“敌方”找到的所有元素的集合-选择器的语法与您在CSS中使用的语法相同,因此为。在敌人面前表明它正在寻找与该类相关的东西


然后,你可以像一个数组一样跨过敌人(它不完全是数组,但有些东西像
for(让i=0;i
所以第i个敌人元素是敌人[i]

id必须是唯一的。如果您使用相同id的元素,则使用类来代替。我认为这是正确的,不幸的是,应用类并选择“getElementsByClassName”返回“TypeError:b.getBoundingClientRect不是重叠处的函数”。类是分配重复值的正确属性。id是唯一的(或者应该是)。关键是id是您针对的敌人-因此它需要是唯一的。您使用document.getElementById()作为id的目标,该id将返回1项。或document.querySelectorAll()以获取单一类型/类/条件的所有元素…如敌人的类:)实际上,我在代码中没有看到任何
getElementsByClassName
,但请记住,它返回一个元素数组。@Leo我理解并添加了getElementsByClassName,但收到了一个错误。如何将数组应用于重叠函数?array.from(document.querySelectorAll('.敌军');这是我的建议:)这对你建议的所有新敌方职业来说都是有效的,不幸的是,他们已经停止移动,似乎正在检测屏幕边缘的重叠,但这大大促进了我的进步