HTML5キャンバスにいくつかの画像があり<p></p>
、カーソルがこれらの画像の1つにカーソルを合わせると、HTMLタグに表示されるテキストを更新する関数を呼び出したいと思います。次の関数を使用して、画像がキャンバスに描画されています。
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
段落の内容をこの関数に更新する関数を呼び出すコードを追加して、各画像にon関数を追加しようとしたので、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);
}
上記のようにこの関数を使用してページを表示し、関数が追加された画像の1つにカーソルを合わせると、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");
}
他の画像に対応するテキストではなく、常に最初の画像のテキストにテキストを変更する理由を誰かが知っていますか?カーソルがホバーしている画像に応じて、テキストを配列の別の要素に変更するように設定したので、画像ごとにその配列とは異なる要素を表示する必要があります...