Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Js: удаление фрагмента кода

990
25 июля 2005 года
Stalcer
137 / / 15.08.2004
Как удалить фрагмент кода страницы c помощью JS?
Например:
slmclmsc sl lsc lsjcjscj
287
25 июля 2005 года
Shiizoo
958 / / 14.03.2004
Можно реализовать применяя DOM, или, если ты целишь только на IE, через innerText какого-либо из предков.

Код:
<html>
    <head>
        <title>AbR</title>
        <script>
        function remove(tag,search)
        {
            if (!tag || !search) return false;
           
            var elems = document.getElementsByTagName(tag);
                     
            if (elems.length)
            {
                for (i = 0, imax = elems.length; i < imax; i++)
                {
                    elems.normalize();
                   
                    for (x = 0, xmax = elems.item(i).childNodes.length; x < xmax; x++)
                    {
                        if (elems.item(i).childNodes.item(x).nodeType == 3)
                        {
                            if (elems.item(i).childNodes.item(x).nodeValue == search)
                            {
                                elems.item(i).parentNode.removeChild(elems.item(i));
                            }
                        }
                    }
                }
            }
        }    
        </script>
    </head>
    <body>
        <input type="button" value="Remove" &#111;&#110;click="remove('b','slmclmsc sl lsc lsjcjscj');">
        slmclmsc sl lsc lsjcjscj
    </body>
</html>


Это был вариант с DOM. Если не пригодится нарисую другой, но лучше иди в этом направлении.
287
25 июля 2005 года
Shiizoo
958 / / 14.03.2004
Блин, вот rofl. Решил затестить код выше, на всякий случай, и оказалось что IE не умеет сливать прямые соседние textNode элемента (ie 6 sp1) после добавления в него новых textNode теми же DOM методами. В общем ниже фикшенная версия.

Код:
<html>
    <head>
        <title>AbR</title>
        <script>
        function remove(tag,search)
        {
            if (!tag || !search) return false;
           
            var elems = document.getElementsByTagName(tag);
                     
            if (elems.length)
            {
                for (i = 0, imax = elems.length; i < imax; i++)
                {
                    if (!document.body) elems.item(i).normalize();
                    else
                    {
                        for (x = 0, xmax = elems.item(i).childNodes.length; x < xmax; x++)
                        {
                            if (elems.item(i).childNodes.item(x).nodeType == 3)
                            {
                                if (elems.item(i).childNodes.item(x).previousSibling && elems.item(i).childNodes.item(x).previousSibling.nodeType == 3)
                                {
                                    elems.item(i).childNodes.item(x).previousSibling.nodeValue += elems.item(i).childNodes.item(x).nodeValue;
                                    elems.item(i).childNodes.item(x).parentNode.removeChild(elems.item(i).childNodes.item(x));
                                }
                            }
                        }
                    }

                    for (x = 0, xmax = elems.item(i).childNodes.length; x < xmax; x++)
                    {
                        if (elems.item(i).childNodes.item(x).nodeType == 3)
                        {
                            alert(elems.item(i).childNodes.item(x).nodeValue);
                            if (elems.item(i).childNodes.item(x).nodeValue == search)
                            {
                                elems.item(i).parentNode.removeChild(elems.item(i));
                            }
                        }
                    }
                }
            }
        }    
        </script>
    </head>
    <body>
        <input type="button" value="Remove" &#111;&#110;click="remove('b','slmclmsc sl lsc lsjcjscj');">
        <b id="a">slmclmsc sl lsc
    </body>
    <script>
        document.getElementById('a').appendChild(document.createTextNode('lsjcjscj'));
        </script>
</html>
990
25 июля 2005 года
Stalcer
137 / / 15.08.2004
А если мне нужно удалять код такого вида:
 
Код:
text text
text

Как видишь в коде нет id
[COLOR=silver]p.s. спасибо за помощь[/COLOR]
287
25 июля 2005 года
Shiizoo
958 / / 14.03.2004
А удаление и не идет по ид. По ид я добавлял кусок текста. Изначально текст содержит только половину, навскидку, того что ты приводил выше. потом я добавил другую часть. Объясню для чего: Есть элемент . Текст в модели DOM для такого рода inline-елементов хранится не в атрибутах самого элемента, а в дочернем элементе text node. Динамически добавить текст можно и в имеющийся text node, а можно и создать еще один. Получиться что-то наподобие "<textnode>Abcd</textnode><textnode>efgh</textnode>". Ну, это в утрированной форме, незнаю как тебе изобразить=) Так вот, нам нужно найти элемент, содержащий текст 'Abcdefgh'. Найти его легче, если искать текст среди textnode (прямых потомков ) в нормализованном виде, то есть виде "<textnode>Abcdefgh</textnode>" (слияние прямых непосредственно соседствующих между собой text node элиментов). Иначе придется прибегать к лишним манипуляциям в коде перебора элементов. Вообще, хотя может я ошибаюсь, DOM модель предусматривает нормализацию text node элементов автоматом, при добавлении и т.п. Во всяком случае так происходит в последних mozilla и opera, а вот в IE text node остаются в том виде, в каком ты их добавил. Я вообще не знал раньше что IE в этом смысле "хулиган", ну вот проверил после того как отпостил и исправился. Нехотелось просто заморачиваться на поиске только для того чтобы вставить немного текста=)

Если тебе нужно найти то, что ты указал ниже, нужно усовершенствовать мой пример. Добавь еще набор условий.. Я сегодня подустал, только с вуза, поступил наконец=) Если не разберешься - дай тут сигнал, сверстаем. Но врядли сегодня;)
990
25 июля 2005 года
Stalcer
137 / / 15.08.2004
Цитата:
Originally posted by Shiizoo
А удаление и не идет по ид. По ид я добавлял кусок текста. Изначально текст содержит только половину, навскидку, того что ты приводил выше. потом я добавил другую часть. Объясню для чего: Есть элемент . Текст в модели DOM для такого рода inline-елементов хранится не в атрибутах самого элемента, а в дочернем элементе text node. Динамически добавить текст можно и в имеющийся text node, а можно и создать еще один. Получиться что-то наподобие "<textnode>Abcd</textnode><textnode>efgh</textnode>". Ну, это в утрированной форме, незнаю как тебе изобразить=) Так вот, нам нужно найти элемент, содержащий текст 'Abcdefgh'. Найти его легче, если искать текст среди textnode (прямых потомков ) в нормализованном виде, то есть виде "<textnode>Abcdefgh</textnode>" (слияние прямых непосредственно соседствующих между собой text node элиментов). Иначе придется прибегать к лишним манипуляциям в коде перебора элементов. Вообще, хотя может я ошибаюсь, DOM модель предусматривает нормализацию text node элементов автоматом, при добавлении и т.п. Во всяком случае так происходит в последних mozilla и opera, а вот в IE text node остаются в том виде, в каком ты их добавил. Я вообще не знал раньше что IE в этом смысле "хулиган", ну вот проверил после того как отпостил и исправился. Нехотелось просто заморачиваться на поиске только для того чтобы вставить немного текста=)

Если тебе нужно найти то, что ты указал ниже, нужно усовершенствовать мой пример. Добавь еще набор условий.. Я сегодня подустал, только с вуза, поступил наконец=) Если не разберешься - дай тут сигнал, сверстаем. Но врядли сегодня;)


Поздравляю студент!
Вобщем прикол в том, что действительно мне нужно удалить именно пример выше. Там нужно удалить текст в пределах textnode и "свободный текст", как это сделать не подозреваю :) так что прийдется попросить тебя помочь разобраться в этом деле ;)
[COLOR=silver]сам поступил в этом году [/COLOR] :D

287
26 июля 2005 года
Shiizoo
958 / / 14.03.2004
То есть из кода:
 
Код:
text text
text

удалить код
 
Код:
text text

???

Щас попробую сверстать, но если свалюсь спать недоделав, то тогда только послезавтра;)
990
26 июля 2005 года
Stalcer
137 / / 15.08.2004
Я имел ввиду, что трудность составляет удалить свободный текст.
А так, в том то и прикол, нужно удалить весь код :D
287
26 июля 2005 года
Shiizoo
958 / / 14.03.2004
;) Сел верстать удаление цепочек элементов, того вида что ты дал.. Но есть такая вот тяга.. Мне в частности свойственная.. Тяга сверстать что-нить универсальное везде и всегда=))) Вот, в общем помучился и уснул. Ты скажи, тебе нужно удалить именно такой фрагмент как ты привел, или же это был просто вариант, а удалять нужно будет различные последовательности в зависимости от обостоятельств??? Это важно=) второе верстается как раз два плюнуть, с первым посложнее;)
990
26 июля 2005 года
Stalcer
137 / / 15.08.2004
Shiizoo
Зависит от тебя, если не лень - напиши универсальную, в другом случае удаляй мой пример :)
Все равно спасибо за содействие.
990
04 августа 2005 года
Stalcer
137 / / 15.08.2004
Shiizoo
Ну как ты мне поможешь удалить приведенный выше код?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог