Javascript $(myObject)内存与myObject内存-问题
我写的函数有问题。我的“bateau”是一个具有x位置和y位置的对象,用于将其放置在我的“格栅”对象中,该对象是一个“bateau”元素表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
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));
};