<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" onclick="remove('b','slmclmsc sl lsc lsjcjscj');">
slmclmsc sl lsc lsjcjscj
</body>
</html>
Js: удаление фрагмента кода
Например:
slmclmsc sl lsc lsjcjscj
Код:
Это был вариант с 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" onclick="remove('b','slmclmsc sl lsc lsjcjscj');">
<b id="a">slmclmsc sl lsc
</body>
<script>
document.getElementById('a').appendChild(document.createTextNode('lsjcjscj'));
</script>
</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" onclick="remove('b','slmclmsc sl lsc lsjcjscj');">
<b id="a">slmclmsc sl lsc
</body>
<script>
document.getElementById('a').appendChild(document.createTextNode('lsjcjscj'));
</script>
</html>
Код:
text text
text
text
Как видишь в коде нет id
[COLOR=silver]p.s. спасибо за помощь[/COLOR]
Если тебе нужно найти то, что ты указал ниже, нужно усовершенствовать мой пример. Добавь еще набор условий.. Я сегодня подустал, только с вуза, поступил наконец=) Если не разберешься - дай тут сигнал, сверстаем. Но врядли сегодня;)
Цитата:
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 в этом смысле "хулиган", ну вот проверил после того как отпостил и исправился. Нехотелось просто заморачиваться на поиске только для того чтобы вставить немного текста=)
Если тебе нужно найти то, что ты указал ниже, нужно усовершенствовать мой пример. Добавь еще набор условий.. Я сегодня подустал, только с вуза, поступил наконец=) Если не разберешься - дай тут сигнал, сверстаем. Но врядли сегодня;)
А удаление и не идет по ид. По ид я добавлял кусок текста. Изначально текст содержит только половину, навскидку, того что ты приводил выше. потом я добавил другую часть. Объясню для чего: Есть элемент . Текст в модели 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
Код:
text text
text
text
удалить код
Код:
text text
???
Щас попробую сверстать, но если свалюсь спать недоделав, то тогда только послезавтра;)
А так, в том то и прикол, нужно удалить весь код :D
;) Сел верстать удаление цепочек элементов, того вида что ты дал.. Но есть такая вот тяга.. Мне в частности свойственная.. Тяга сверстать что-нить универсальное везде и всегда=))) Вот, в общем помучился и уснул. Ты скажи, тебе нужно удалить именно такой фрагмент как ты привел, или же это был просто вариант, а удалять нужно будет различные последовательности в зависимости от обостоятельств??? Это важно=) второе верстается как раз два плюнуть, с первым посложнее;)
Зависит от тебя, если не лень - напиши универсальную, в другом случае удаляй мой пример :)
Все равно спасибо за содействие.
Ну как ты мне поможешь удалить приведенный выше код?