Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавление div-а после h2 (https://javascript.ru/forum/misc/56141-dobavlenie-div-posle-h2.html)

qwe88 01.06.2015 13:16

Добавление div-а после h2
 
Добрый день!
Подскажите, пожалуйста, как сделать так, что после каждого h2 вставлялся div со словами?

Сделал так, но див добавляется к последнему:
<h2>kfkdkd</h2>

<h2>ww</h2>

<h2>ww</h2>

<script>
    new_elem = document.createElement('div');
    new_elem.innerHTML = "baga";//ваш полученный код HTML
//Вставка нового элемента после элемента с id='todo'

    for (i=0; i<5; i++) {

        target = document.getElementsByTagName('h2')[i];
        target.parentNode.insertBefore(new_elem, target.nextSibling);

    }
</script>

рони 01.06.2015 13:20

qwe88,
вы создали один элемент, один и добавится хоть 10 раз его вставить

qwe88 01.06.2015 13:24

Супер!
Спасибо огромное!

рони 01.06.2015 13:27

qwe88,
<!DOCTYPE HTML>

<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
</head>

<body>
    <h2>kfkdkd</h2>

    <h2>ww</h2>

    <script>
        var h = document.getElementsByTagName('h2'),
            target, new_elem;
        for (i = 0; i < h.length; i++) {
            new_elem = document.createElement('div');
            new_elem.innerHTML = "baga";
            target = h[i];
            target.parentNode.insertBefore(new_elem, target.nextSibling);
        }
    </script>

</body>

</html>

qwe88 01.06.2015 13:29

Примерно так я и сделал:
<h2>kfkdkd</h2>

<h2>ww</h2>

<h2>ww</h2>

<script>

    var beg = document.getElementsByTagName('h2');

    for (i=0; i<beg.length; i++) {
        new_elem = document.createElement('div');
        new_elem.innerHTML = "baga";

        target = document.getElementsByTagName('h2')[i];
        target.parentNode.insertBefore(new_elem, target.nextSibling);

    }
</script>


Спасибо вам огромное!

qwe88 01.06.2015 14:25

А подскажите, пожалуйста, как добавить элемент не только после, но и до
Пробую так, но добавляет только до:
target.parentNode.insertBefore(new_elem, target.nextSibling);
    target.parentNode.insertBefore(new_elem, target.previousSibling);

qwe88 01.06.2015 14:35

В итоге создал второй for
Может есть способ проще?

рони 01.06.2015 15:01

qwe88,
<!DOCTYPE HTML>

<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
</head>

<body>
    <h2>kfkdkd</h2>

    <h2>ww</h2>

    <script>
        var h = document.getElementsByTagName('h2'),
            target, new_elem;
            new_elem = document.createElement('div');
            new_elem.innerHTML = "baga";
        for (i = 0; i < h.length; i++) {
            target = h[i];
            target.parentNode.insertBefore(new_elem.cloneNode(true), target.nextSibling);
            target.parentNode.insertBefore(new_elem.cloneNode(true), target);
        }
    </script>

</body>

</html>


Часовой пояс GMT +3, время: 10:41.