使用表格坐标删除表格内的图片

时间:2018-09-04 09:50:19

标签: javascript jquery html

问题

如何使用jquery / javascript的坐标正确删除图像?

Here the pen

代码和说明

我声明了一个全局对象数组

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);
}

因此,在删除该函数之前,我将其添加到注释中,现在我正尝试对其进行重写。

1 个答案:

答案 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();
};

由于这篇文章,我实现了这个答案:

1)Remove first img in first li element with jquery