@Madsh
Только начинаю изучать Js

Почему не работает код на Js removeChild?

Изучаю JavaScript, сама себе поставила задачу: Используя removeChild удалить нечетные параграфы со страницы, а если параграф четный, то текст должен стать красным. Мой код:
<body>
    <h1>DOM Examples</h1>
    <div>
        <p>Here is the paragraph</p>
        <p>Here is the second paragraph</p>
        <p>Here is the third paragraph</p>
        <p>Here is the forth paragraph</p>
        <p>Here is the fifth paragraph</p>
        <p>Here is the sixth paragraph</p>
    </div>
    <script>
        var myDiv = document.querySelector('div');
        for (i=0; i<myDiv.length; i++){
            if (i%2==0){
                myDiv.removeChild(myDiv.children[i]);
            }
            else myDiv[i].style.color = "red";
        }
    </script>
</body>


Код не выдает ошибок, но и ничего не делает. Почему?
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Разбираясь с проблемой стоит исследовать, с чем идёт работа: что находится в myDiv.length — можно вывести в консоль, как вариант. console.log(myDiv.length); // undefined

Что представляет из себя myDiv.children — стоит почитать документацию. Важный момент: это «живая» коллекция. Как только удаляете из неё элемент, коллекция обновляется. Удалили 1-й, все сдвинулись на 1, и 3-м станет тот, что ранее был 4-м.

Для задачи можно использовать querySelectorAll — это статичная коллекция.
spoiler

Ответ написан
Комментировать
@heider
var myP = document.querySelectorAll('div > p');
        for (var i = 0; i < myP.length; i++) {
            if (i % 2 == 0) {
                myP[i].remove();
            }
            else myP[i].style.color = "red";
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы