JavaScript - extremamente confuso na remoção de elementos do Container

Eu estou fazendo um single-player de RPG web de estilo Zelda top-down 2D em JavaScript.

Quando o jogador (camisa roxa) anda perto de um gato, ele "resgata" isso ... o que basicamente removeanimalContainer deContainerOfAnimals (removendo assim o BMP do animalContainer's do palco) e, em seguida, adicione o id desse animalContainer a umrescuedTotal_Array...

O estranho é que, na foto abaixo, eu sou capaz de resgataranimalContainer2 eentão resgataranimalContainer1... Mas se eu for deanimalContainer1 paraanimalContainer2, lança um

Uncaught TypeError: Cannot read property 'id' of undefined` error. 

...Basicamente:

Forma de trabalho: obter ID 22, em seguida, até ID 21 - >>> Uma coisa que eu noto com isso é que o nome do elemento não muda para o ID ... não tenho certeza do porquê ... então, para a maneira quebrada ... pode não ser possível nem mesmo associar o nome do elementoanimalContainer2 com um ID? Mas eu não sei como o ID e o nome poderiam ser desassociados assim.

ID in rescued array...: 22, element name: animalContainer1, rescued array length: 2, elem index pos: 0, index: 0

ID in rescued array...: 21, element name: animalContainer1, rescued array length: 2, elem index pos: 1, index: 0 

Forma quebrada - lança erro: obter ID 21, depois para ID 22

ID in rescued array...: 21, element name: animalContainer1, rescued array length: 1, elem index pos: 0, index: 0 

1. Uncaught TypeError: Cannot read property 'id' of undefined 

Fragmento de código:

        function grabIt(NPC_id, index) {
            //check if NPCid already exists in array before adding...
            if ($.inArray(ContainerOfAnimals.children[index].id, rescuedTotal_Array) == -1) {
                rescuedTotal_Array.push(ContainerOfAnimals.children[index].id);
            }
            if (rescuedTotal_Array.length == 2) {
                for (var z = 0; z < rescuedTotal_Array.length; z++) {
                    console.log("ID in rescued array...: " + rescuedTotal_Array[z] + ", \n element name: " + ContainerOfAnimals.children[index].name + ", rescued array length: " + rescuedTotal_Array.length + ",\n elem index pos: " + z + ",\n index: " + index);
                }
            }
            //when I remove the first added element to rescuedTotalArray... the 2nd element's index assumes first added element's index... (goes from 1 to 0)
            console.log(index);
            console.log("element removed: " + ContainerOfAnimals.children[index]);
            stage.update();
            ContainerOfAnimals.removeChild(ContainerOfAnimals.children[index]);
            updateHUD();
        }

Eu não tenho idéia porque a ordem em que eu armazenar elementos na matriz / removê-los do palco seria importante ...

EDIT: eu sinto que posso resolver esse problema, removendo o elemento de ContainerOfAnimals por ID do elemento em vez de por índice ... por objeto Container não oferece nenhumgetChildID() função...

então eu tentei:

    var childToRemove = document.getElementById(ContainerOfAnimals.children[index]);
    console.log(childToRemove);
    ContainerOfAnimals.removeChild(childToRemove);

console.log (childToRemove) me dánull para crianças

Mas fazendo isso:console.log(ContainerOfAnimals.children[index].id); me dá id21, qual é o id correto ...

questionAnswers(4)

yourAnswerToTheQuestion