Javascript 鼠标悬停仅处理最后一项
Javascript 鼠标悬停仅处理最后一项,javascript,html,css,canvas,hover,Javascript,Html,Css,Canvas,Hover,var canvas=document.getElementById('mainCanvas'); var ctx=canvas.getContext('2d'); var status=document.getElementById('status'); var click=document.getElementById('click'); var hover=document.getElementById('hover'); canvas.style.backgroundColor='红色'
var canvas=document.getElementById('mainCanvas');
var ctx=canvas.getContext('2d');
var status=document.getElementById('status');
var click=document.getElementById('click');
var hover=document.getElementById('hover');
canvas.style.backgroundColor='红色';
var mouseX;
var mouseY;
var item1=新项目('item1',ctx);
项目1.提取项目(50,50);
var item2=新项目('item2',ctx);
项目2.提款项目(150200);
var item3=新项目('item3',ctx);
项目3.提取项目(200250);
var items=[item1,item2,item3];
addEventListener('mousemove',mouseMoveHandler,false);
canvas.addEventListener('click',mouseClickHandler,false);
函数mouseMoveHandler(事件){
mouseX=event.clientX-canvas.getBoundingClientRect().left;
mouseY=event.clientY-canvas.getBoundingClientRect().top;
对于(变量i=0;iitems[i].x&mouseY>items[i].y&
mouseX
0 | 0
否
您的问题是,在找到命中目标后,for循环仍在运行。假设你用鼠标点击了第2项。您的代码将工作并显示“item2”。然后循环转到下一步,检查您是否将鼠标悬停在item3上。您没有,因此代码显示“否”
解决办法是一旦你击中了,就停止循环
if (mouseX > items[i].x &
mouseY > items[i].y &
mouseX < items[i].x + items[i].width &
mouseY < items[i].y + items[i].height
) {
hover.innerHTML = items[i].name;
break;
} else {
hover.innerHTML = 'No';
}
if(mouseX>items[i].x&
鼠标>项目[i].y&
mouseX
您的问题是,在找到命中后for循环会继续运行。假设你用鼠标点击了第2项。您的代码将工作并显示“item2”。然后循环转到下一步,检查您是否将鼠标悬停在item3上。您没有,因此代码显示“否”
解决办法是一旦你击中了,就停止循环
if (mouseX > items[i].x &
mouseY > items[i].y &
mouseX < items[i].x + items[i].width &
mouseY < items[i].y + items[i].height
) {
hover.innerHTML = items[i].name;
break;
} else {
hover.innerHTML = 'No';
}
if(mouseX>items[i].x&
鼠标>项目[i].y&
mouseX
请在此处显示相关的HTML和CSS,以便我们可以复制您的问题。当您链接到第三方网站时,链接可能会随着时间的推移而中断,然后您的问题就没有意义了。请在此处显示相关的HTML和CSS,以便我们可以复制您的问题。当你链接到第三方网站时,有可能链接会随着时间的推移而中断,然后你的问题就没有意义了。