Я создаю строительную игру на JavaScript и PHP, которая использует сетку. Каждый квадрат в сетке является элементом div с собственной функцией onmouseover и onmousedown:
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.
Спасибо!