Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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_Html_Css_Canvas_Hover - Fatal编程技术网

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,以便我们可以复制您的问题。当你链接到第三方网站时,有可能链接会随着时间的推移而中断,然后你的问题就没有意义了。