Javascript 不正确的事件目标
我正在创建一个选择器插件(它可以将活动类设置为多个元素) 算法:Javascript 不正确的事件目标,javascript,html,select,event-handling,dom-events,Javascript,Html,Select,Event Handling,Dom Events,我正在创建一个选择器插件(它可以将活动类设置为多个元素) 算法: onMouseDown创建元素 onMouseMove当onMouseDown移动到我想要选择的元素时,我创建的元素会改变大小 onMouseUp获取事件目标并施展魔法 这是简短的版本由于简短,但我有一个问题,以获得适当的事件目标。当我移动到右侧和底部/顶部(我的x轴为正)时,我得到了正确的事件目标。但是当我的x轴为负时,我总是得到改变大小的元素,而不是我需要的元素 const container=document.queryS
onMouseDown
创建元素李>
onMouseMove
当onMouseDown
移动到我想要选择的元素时,我创建的元素会改变大小onMouseUp
获取事件目标并施展魔法const container=document.querySelector('.container');
让选择器=null;
container.addEventListener('mousedown',(e)=>{
选择器=document.createElement('div');
selector.style.position='fixed';
selector.style.border='1px蓝色虚线';
selector.style.width='1px';
selector.style.height='1px';
selector.style.left=e.clientX+'px'
selector.style.top=e.clientY+'px'
selector.className=“selector”;
container.appendChild(选择器);
常量mouseDownClientX=e.clientX;
const mouseDownClientY=e.clientY;
document.onmousemove=e=>{
渲染选择器(e、mouseDownClientX、mouseDownClientY);
}
document.onmouseup=e=>{
console.log(如target);
选择器。移除();
}
});
函数renderselector(e、mouseDownClientX、mouseDownClientY){
const top=Math.min(e.clientY,mouseDownClientY);
const left=Math.min(e.clientX,mouseDownClientX)
const width=Math.abs(e.clientX-mouseDownClientX);
const height=Math.abs(e.clientY-mouseDownClientY);
selector.style.width=宽度+px;
selector.style.height=高度+px;
selector.style.top=top+'px';
selector.style.left=left+'px';
}
*{
填充:0px;
边际:0px;
框大小:边框框;
}
.集装箱{
显示器:flex;
证明内容:中心;
对齐内容:居中对齐;
柔性包装:包装;
宽度:50vw;
高度:100vh;
保证金:0自动;
边框:1px纯色灰色;
}
.项目{
填充:20px;
flex:050px;
边框:1px纯色灰色;
}
需要将我的选择器的z索引更改为小于我的div。因此选择器在覆盖它时不会更改项目的尺寸,对吗?这是因为你没有得到正确的物品目标?@AnthonyGedeon当onMouseUp事件被触发时,我需要得到带有物品类名的div的e.target,我会这样做,但是,只有当我的x轴为正时(通过onMouseMove事件向右移动)。当我执行onmouse时,从onMouseDown向左移动e.target始终是一个带有选择器类名的项