JavaScript - очень запутан при удалении элементов из контейнера

Я делаю 2D, сверху вниз, Zelda стиль веб-ролевых игр для одного игрока на JavaScript.

Когда игрок (фиолетовая рубашка) ходит рядом с кошкой, он "спасение» это ... который в основном удаляетanimalContainer отContainerOfAnimals (тем самым удаляя animalContainer 'с BMP со сцены), а затем добавьте id этого animalContainer вrescuedTotal_Array...

Странно то, что на картинке ниже яя могу спастиanimalContainer2 а такжезатем спасениеanimalContainer1... но если я пойду изanimalContainer1 вanimalContainer2Кидает

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

...В принципе:

Рабочий способ: получить ID 22, затем до ID 21 - >>> При этом я замечаю, что имя элемента неизменить идентификатор ... не знаю, почему ... так что сломанный путь ... он может быть не в состоянии даже связать имя элементаanimalContainer2 с удостоверением личности? Но я неЯ не знаю, как идентифицировать имя и имя таким образом.

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 

Сломанный путь - выдает ошибку: получите ID 21, затем до 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 

Фрагмент кода:

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

Я понятия не имею, почему порядок, в котором я храню элементы в массиве / удаляю их со сцены, будет иметь значение ...

РЕДАКТИРОВАТЬ: я чувствую, что могу решить эту проблему, удалив элемент из ContainerOfAnimals по идентификатору элемента, а не по индексу ... объект контейнера не предлагаетgetChildID() функция ...

поэтому я попробовал:

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

console.log (childToRemove) дает мнеnull для детей

Но делать это:console.log(ContainerOfAnimals.children[index].id); дает мне идентификатор21, который является правильным идентификатором ...

Ответы на вопрос(4)

Ваш ответ на вопрос