0
我正在使用跨越整个网页宽度和长度的画布。只要我在画布上的任意位置点击鼠标,向任意方向移动鼠标,并且一旦我释放框创建,我就可以创建框。考虑选择如何在任何桌面上工作,但在mouseup
选择框画在画布上。应用CSS样式不能正确使用Javascript
我的问题是,我想更新光标,只要我mouseover
我创建的任何框。我将它们存储在一个名为面板的数组中。
function mouseOverPanels(e) {
var mouseX = e.clientX, mouseY = e.clientY;
// loop through all the panels
for (var i = 0; i < panels.length; i++) {
// if cursor is within the bounds of one of the panels, update cursor
if ((mouseX >= panels[i].x && mouseX <= panels[i].x + panels[i].width) && (mouseY >= panels[i].y && mouseY <= panels[i].y + panels[i].height)) {
canvas.style.cursor = "pointer";
}
// if not, then set the cursor to "crosshair" (default)
else canvas.style.cursor = "crosshair";
}
}
此代码正在工作。当我第一次创建面板时,如果将鼠标悬停在面板上,它会正确注册光标在其范围内并相应地更新光标。但是,无论何时创建新面板,该功能都会停止更新所有先前面板的光标,并且只能用于创建的最新面板,即使只要将鼠标悬停在前面的面板上,该功能也能正确注册,但它不会更新光标他们的界限。
想法?解决方案必须完全使用JavaScript实现,而不使用库。
调试时,我被打印到控制台我,每当我鼠标悬停在某个值面板,并且它的打印正确(第一个面板为0,第二个面板为1,第三个为2,等等)。 –
只加上'break'就解决了我的问题。谢谢! –
@JadHaidar:*“当我将鼠标悬停在面板上并且打印正确时,我正在向控制台打印i的值。”*右键 - 然后再次循环,并重置“else”中的“游标”属性',这是问题所在。只要添加'break'就足够了,但是像这样反复设置cursor属性是很愚蠢的。 –