将onmouseover事件绑定到数组中的多个元素

时间:2014-04-03 22:33:06

标签: javascript

我正在编写一个小型JavaScript游戏。

我正在看的代码是:

cells[i].onmouseover = function() {
        cells[i].style.top =
        (cells[i].getAttribute('data-top') - 25).toString() + "px";
    }

每个cell [i]元素都是<img>元素数组的成员。

目前,每当我将鼠标悬停在img元素上时,都会产生以下错误:

Uncaught TypeError: Cannot read property 'style' of undefined 

我无法解决正在发生的事情。为什么cells[i]未定义?

以下是所有可能相关的代码:

for(var i = 0; i < mapSize; ++i) {
    cells[i] = document.createElement('img');
    cells[i].src = 'base1.png';
    cells[i].class = 'base1';
    cells[i].id =  'cell' + i;

    game.appendChild(cells[i]);

    row = Math.floor(i / mapWidth);

    top = tops[i%mapWidth + row];
    left = lefts[mapWidth + (i % mapWidth) - row];

    cells[i].setAttribute('data-top',top);
    cells[i].setAttribute('data-left',left);

    cells[i].style.top = top.toString() + "px";
    cells[i].style.left = left.toString() + "px";
    cells[i].style.zindex = i;

    console.log(cells[i]);

    cells[i].onmouseover = function() {
        cells[i].style.top =
        (cells[i].getAttribute('data-top') - 25).toString() + "px";
    }
}

1 个答案:

答案 0 :(得分:-3)

这应该有用......

cells.each(function(key, index){
    var _this = $(this);
    _this.mouseover(function() {
        var top = _this.data("top") - 25;
        $(this).css("top",top);
    });
})