Javascript $(myObject)内存与myObject内存-问题

Javascript $(myObject)内存与myObject内存-问题,javascript,jquery,Javascript,Jquery,我写的函数有问题。我的“bateau”是一个具有x位置和y位置的对象,用于将其放置在我的“格栅”对象中,该对象是一个“bateau”元素表 Joueur.prototype.placeFullBateau = function(grille, bateau) { var x = bateau.positionX; var y = bateau.positionY; var direction = bateau.direction

我写的函数有问题。我的“bateau”是一个具有x位置和y位置的对象,用于将其放置在我的“格栅”对象中,该对象是一个“bateau”元素表

Joueur.prototype.placeFullBateau = function(grille, bateau) {
    var x           = bateau.positionX;
    var y           = bateau.positionY;
    var direction   = bateau.direction;
    if (direction == "droite") {
        for (var i = 0; i <= bateau.taille-1; i++) {
            grille.plateau[x][y+i] = $(bateau);
            console.log(bateau);
            console.log($(bateau));
            console.log("Bateau : "+$(bateau).get(0).nom+", positionY : "+grille.plateau[x][y+i].get(0).positionY);
            console.log(grille.plateau[x][y+i]);
            $(bateau).get(0).positionY += 1;
            };
};
在“$(bateau)”的console.log()中,positionY(或positionX,取决于我想要改变的位置)会记住它所取的最后一个值。 这里,位置Y总是7(因为它从2开始,大小是5)

我正试图:

grille.plateau[x][y+i] = $(bateau);
grille.plateau[x][y+i].get(0).positionY = bateau.positionY;
$(bateau).get(0).positionY += 1;

我迷路了。。 希望我提供了足够的信息来获得帮助。。我不会粘贴整个代码:/

这是一把小提琴: 不起作用,当我点击一个单元格时,丢失的图像会显示出来。 我所做的是当我点击一个单元格时,我获取它的id。 问题是,某些单元格(其中包含一个对象)的id是错误的,因为它使用bateau.positionX&bateau.positionY&bateau.numjouer。(对于播放器1的单元格(4,4),看起来像“441”。) 这是完整的工作项目:(见下面的评论,不能发布两个链接)。只需解压缩并在本地加载(linux文件系统)

干杯
克拉奇

我建议把这个问题作为这个问题的一个骗局来解决:

但原因如下:

这是for循环中非常常见的JavasScript闭包问题。您需要在当前通过循环时捕获
i
的值,而不仅仅是引用
i

    for (var i = 0; i <= bateau.taille-1; i++) {
            (function(i) {
              grille.plateau[x][y+i] = $(bateau);
              console.log(bateau);
              console.log($(bateau));
              console.log("Bateau : "+$(bateau).get(0).nom+", positionY : "+grille.plateau[x][y+i].get(0).positionY);
              console.log(grille.plateau[x][y+i]);
              $(bateau).get(0).positionY += 1;
            }(i));
    };

for(var i=0;我可以在中添加一个代码的工作示例。仅从书面描述很难了解正在发生的事情/希望发生的事情。为什么需要将对象包装在
$()
首先?根本不清楚您想做什么:它不起作用,因为我在点击改变背景的“td”时使用了图像。完整项目zip:感谢您的回答。这不起作用。没有任何错误,但我仍然得到相同的结果。
    for (var i = 0; i <= bateau.taille-1; i++) {
            (function(i) {
              grille.plateau[x][y+i] = $(bateau);
              console.log(bateau);
              console.log($(bateau));
              console.log("Bateau : "+$(bateau).get(0).nom+", positionY : "+grille.plateau[x][y+i].get(0).positionY);
              console.log(grille.plateau[x][y+i]);
              $(bateau).get(0).positionY += 1;
            }(i));
    };