gpt4 book ai didi

javascript - 当光标悬停在 HTML5 Canvas 上的图像上时更新段落中显示的文本

转载 作者:行者123 更新时间:2023-11-28 09:20:14 24 4
gpt4 key购买 nike

我在 HTML5 Canvas 上有一些图像,我想调用一个函数来更新 HTML <p></p> 中显示的文本。每当光标悬停在这些图像之一上时都会标记。使用以下函数将图像绘制到 Canvas 上:

function drawBox(imageObj, img_x, img_y, img_width, img_height) {
console.log("function drawBox is drawing the description boxes");
var canvasImage = new Kinetic.Image({
image: imageObj,
width: img_width,
height: img_height,
// puts the image in the middle of the canvas
x: img_x,
y: img_y
});

// add cursor styling

imagesLayer.add(canvasImage);
}

我尝试添加 mouseover通过添加一些代码来调用我的函数来将段落的内容更新到此函数,从而对每个图像进行函数处理,所以我的 drawBox函数现在看起来像这样:

function drawBox(imageObj, img_x, img_y, img_width, img_height) {
console.log("function drawBox is drawing the description boxes");
var canvasImage = new Kinetic.Image({
image: imageObj,
width: img_width,
height: img_height,
// puts the image in the middle of the canvas
x: img_x,
y: img_y
});

// add cursor styling


canvasImage.on("mouseover", function(){
//displayAssetDescriptionTip();
console.log("displayAssetDescriptionTip() is being called on mouseover event");

});

imagesLayer.add(canvasImage);
}

当我使用上面的功能查看我的页面,并将光标悬停在已添加该功能的图像之一上时,我已添加到我的 mouseover 中的日志函数正在控制台中显示 - 所以我知道鼠标悬停工作正常。

但是,我遇到的问题是我想从 mouseover 中调用的函数。事件。您将在上面看到,我注释掉了对函数 displayAssetDescriptionTip() 的调用。在我的mouseover事件。这是我想在光标悬停在这些图像上时调用的函数,但是,它似乎总是将段落中的文本更改为属于第一个描述框的文本...即,如果光标悬停在我添加的任何图像上 mouseover事件为,则文本将更改为属于第一张图像的文本,而不是光标悬停在其上的图像。

功能是:

function displayAssetDescriptionTip(){
if(canvasImage.id = "assetBox")
document.getElementById('tipsParagraph').innerHTML = tips[34];
else if(canvasImage.id = "liabilitiesBox")
document.getElementById('tipsParagraph').innerHTML = tips[35];
else if(canvasImage.id = "incomeBox")
document.getElementById('tipsParagraph').innerHTML = tips[36];
else if(canvasImage.id = "expenditureBox")
document.getElementById('tipsParagraph').innerHTML = tips[37];
else return;

console.log("displayAssetDescriptionTip being called");
}

有人知道为什么它总是将文本更改为第一张图像的文本,而不是与任何其他图像对应的文本吗?我已将其设置为根据光标悬停在哪个图像上将文本更改为数组的不同元素,因此它应该为每个图像显示该数组中的不同元素...

最佳答案

在函数 displayAssetDescriptionTip 中,您使用 = 赋值运算符而不是 == 比较运算符,因此您的第一个 if 条件始终匹配。

修正的功能:

function displayAssetDescriptionTip(canvasImage){
if(canvasImage.id == "assetBox")
document.getElementById('tipsParagraph').innerHTML = tips[34];
else if(canvasImage.id == "liabilitiesBox")
document.getElementById('tipsParagraph').innerHTML = tips[35];
else if(canvasImage.id == "incomeBox")
document.getElementById('tipsParagraph').innerHTML = tips[36];
else if(canvasImage.id == "expenditureBox")
document.getElementById('tipsParagraph').innerHTML = tips[37];
else return;

console.log("displayAssetDescriptionTip being called");
}

不要忘记将 canvasImage 作为参数传递给事件处理程序

 canvasImage.on("mouseover", function(){
displayAssetDescriptionTip(canvasImage);
});

关于javascript - 当光标悬停在 HTML5 Canvas 上的图像上时更新段落中显示的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15089420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com