J'ai une toile et j'utilise jCanva (http://calebevans.me/projects/jcanvas/docs.php?p=layers)s pour créer des cercles avec des événements. Je souhaite que chaque cercle contienne du texte (pour l'événement mouseover) et id (pour l'événement click). Le problème est que les événements sont dynamiques, et le «i» est toujours le dernier i (data.length) de sorte que tous les cercles obtiennent les mêmes valeurs ... Comment puis-je le résoudre?texte dynamique et liens avec jCanvas
for (i = 0; i < data.length; i++) {
var id = data[i][0];
var text = data[i][2];
$("#mapCanvas").drawArc({
layer: true,
fillStyle: "yellow",
strokeStyle: "#000",
strokeWidth: 1,
x: Math.random() * c.clientWidth,
y: Math.random() * c.clientHeight,
radius: 6,
click: function (layer) {
window.open("Edit/" + id);
},
mouseover: function (layer) {
$("canvas")
.addLayer({
method: "drawRect",
name: "BackgroundLabel",
group: "ItemLabel",
fillStyle: "#FFFFD4",
x: layer.x + 10,
y: layer.y - 15,
width: 100,
height: 20
})
.drawLayers();
$("#mapCanvas").drawText({
layer: true,
fillStyle: "white",
strokeWidth: 0,
x: layer.x + 10,
y: layer.y - 10,
font: "14pt Arial, Verdana, sans-serif",
text: text
});
}
});
Vérifiez si vous pouvez pousser l'identifiant/nom à l'objet de la couche que vous obtenez comme argument dans le gestionnaire d'événements, ou vous pouvez l'écrire comme ça: ' clic: (function() { \t \t fonction de retour (id) { \t \t \t window.open ("Edit /" + id); \t \t} })(); ' Pour créer une portée différente pour chaque dessin – Bnaya