问题
如何使用jquery / javascript的坐标正确删除图像?
笔
代码和说明
我声明了一个全局对象数组
const items=[
{
name: "axe",
image: "https://image.ibb.co/n1hTEe/icons8_small_axe_64.png",
hit: 3,
actualPosition: {
row: 0,
cell: 0
}
},
{
name: "scythe",
image: "https://image.ibb.co/nqpJ2z/if_holidays_scythe_1459435.png",
hit: 4,
actualPosition: {
row: 0,
cell: 0
}
},
{
name: "sword",
image: "https://image.ibb.co/jXzuLK/icons8_sword_48.png",
hit: 2,
actualPosition: {
row: 0,
cell: 0
}
},
使用以下功能可以“捕获”一个对象,该对象的相对图像将出现在播放器1的右上角框中,在文本附近的右侧
<p>Health:</p>
<p>Mana:</p>
如果角色和对象具有相同的坐标,则角色将具有对象的相对奖励,我们将启动该功能以从地图上删除该对象的图像(和坐标)。
function catchAnObjects(){
let rowChar = character.actualPosition.row,
cellChar = character.actualPosition.cell,
itemRow = 0,
itemCell = 0;
for(var i = 0; i<items.length; i++){
itemRow = items[i].actualPosition.row;
itemCell = items[i].actualPosition.cell;
if(itemRow === rowChar && itemCell === cellChar){
character.hit = character.hit + items[i].hit;
$("#itemPlayerOne").attr("src",items[i].image);
removeItem(items[i]);
break;
};
};
};
该对象必须从地图上消失,而不是从角色的div中消失,所以我尝试了这一点,
function removeItem(item){
let coord=item.actualPosition;
var itemImage = $(item.name);
var row = $($("#tableGame tr")[coord.row]);
var cell = $($("td", row)[coord.cell]);
var tile = $(".tile", cell);
tile.remove(itemImage);
};
但是它不起作用,我可以选择对象,但是不能从地图中删除该对象。我该如何实现?
地图是随机生成的二维数组,如下所示:
map = [[1,1,1,1,0],
[1,0,0,0,0],
[1,0,1,1,1],
[1,0,0,0,1],
[1,1,1,0,1]]
任何建议将不胜感激,谢谢。
UPDATE
我认为问题出在下面的函数中。
我要解决的问题,或者尝试做的是:
在coord.row,coord.cell位置选择元素。 选择具有正确item.name的图像并将其删除。
function removeItem(item){
let coord=item.actualPosition;
var itemImage = $(item.name);
var row = $($("#tableGame tr")[coord.row]);
var cell = $($("td", row)[coord.cell]);
var tile = $(".tile", cell);
tile.remove(itemImage);
}
因此,在删除该函数之前,我将其添加到注释中,现在我正尝试对其进行重写。
答案 0 :(得分:0)
可能不是最好的答案,在这种情况下,任何形式的纠正都将受到赞赏(我真的需要学习),但是我找到了解决方案。
function removeItem(item){
let coord=item.actualPosition;
var row = $($("#tableGame tr")[coord.row]);
var cell = $($("td", row)[coord.cell]);
var tile = $(".tile", cell);
tile.first().find('img').first().remove();
};
由于这篇文章,我实现了这个答案: