グリッドを含む JavaScript と PHP で建物ゲームを作成しています。グリッド内の各正方形は、独自の onmouseover および onmousedown 関数を持つ div です。
for(x=0; x < width; x++)
{
for(y=0; y < height; y++)
{
var div = document.createElement("div");
//...
div.onmouseclick = function() {blockClick(x, y)}
div.onmouseover = function() {blockMouseover(x, y)}
game.appendChild(div);
}
}
しかし、すべての正方形は、追加された最後の正方形の x と y を持っているようです。なぜこれが起こっているのか、なんとなくわかります-変数を複製するのではなく、xとyへのポインターを作成しています-しかし、どうすれば修正できますか? 私も試してみました
for(x=0; x < width; x++)
{
for(y=0; y < height; y++)
{
var div = document.createElement("div");
var myX = x;
var myY = y;
div.onmouseclick = function() {blockClick(myX, myY)}
div.onmouseover = function() {blockMouseover(myX, myY)}
game.appendChild(div);
}
}
同じ結果で。
私はdiv.setAttribute("onmouseover", ...)
Firefox で動作するものを使用していましたが、IE では動作しませんでした。ありがとう!