Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.05.2011, 01:00
Аспирант
Отправить личное сообщение для DZHETIGAPA Посмотреть профиль Найти все сообщения от DZHETIGAPA
 
Регистрация: 30.10.2010
Сообщений: 41

Удалить тег без удаления содержимого
Как можно удалить тег, не удаляя его содержимое, на js или jquery. Если всего один тег внутри родителя, то удалить легко, а если их много и нужно удалить конкретный тег, то тут сложнее.

Может регулярные выражения использовать?

Кто сможет подсказать или хотя бы навести на мысль?
Ответить с цитированием
  #2 (permalink)  
Старый 13.05.2011, 01:14
Аспирант
Отправить личное сообщение для DZHETIGAPA Посмотреть профиль Найти все сообщения от DZHETIGAPA
 
Регистрация: 30.10.2010
Сообщений: 41

Спасибо! Уже сам решил проблему!
Ответить с цитированием
  #3 (permalink)  
Старый 19.05.2011, 21:29
Аватар для xmapact
Новичок на форуме
Отправить личное сообщение для xmapact Посмотреть профиль Найти все сообщения от xmapact
 
Регистрация: 18.05.2011
Сообщений: 1

Раз уж тема создана попробую привести пару примеров. Если есть ошибки, пожалуйста, критикуйте.

Дпустим есть HTML страница, где есть немного текста и много тегов без указания классов или ID.
Для наглядности попробую удалить тег
<b>
.


<html lang="en">
<head>
    <title>delTag</title>
</head>

<body>

<script type="text/javascript" src="delTag.js"></script>

    <div id="article">
        <h1>Удалить тег не удаляя содержимое, ага, давай!</h1> 
        <ol>
            <li><p><b>Спасибо! Уже сам решил проблему!</b></p>
            <li><p><b>Thank you! Already solved the problem myself!</b></p>
            <li><p><b>Дзякуй! Ужо сам вырашыў праблему!</b></p>
            <li><p><b>Merci! Déjà résolu le problème moi-même!</b></p>
        </ol>
        <p>Попробуем удалить тег  &lt;b&gt; в одном из елементов списка. Рассмотрим два примера в которых нужно удалить тег:</p>
        <ol>
            <li><p>Удалить тег в третьем по счету элементе списка.</p><button onclick="thirdIsDown()" id="thirdIsDown">Удалить</button>
            <li><p>Удалить тег в строке в которой встречается слово "solved".</p><button onclick="solvedIsDown()" id="solvedIsDown">Удалить</button>
        </ol>
    </div>

</body>
</html>


Содержимое delTag.js:

function thirdIsDown(){
    var placeToFindVictim = document.getElementsByTagName("li")[2];
        
        function resqueText(node){
            for (i = node.firstChild; i != null; i = node.nextSibling){
                if (i.nodeType == 1)
                    return resqueText(i);
                    
                if (i.nodeType == 3){
                    var b = i.parentNode;
                    b.parentNode.replaceChild(i, b);
                    
                    return null;
                }
            }
            
            return null;
        };
        
    resqueText(placeToFindVictim);
    killAction("thirdIsDown");
};

function solvedIsDown(){
    var placeToFindVictim = document.getElementsByTagName("li");
        for (i = 0; i < placeToFindVictim.length; i++){
            killAllMatchingTextNodes(placeToFindVictim[i]);
        }
            function killAllMatchingTextNodes(node){
                for (i = node.firstChild; i != null; i = node.nextSibling){
                    if (i.nodeType == 1)
                        return killAllMatchingTextNodes(i);
                        
                    if (i.nodeType == 3){
                        var pattern = /solved/;
                            if (pattern.test(i.data)){
                                var b = i.parentNode;
                                b.parentNode.replaceChild(i, b);
                                
                                return null;
                            }
                    }
                }
            return null;
            }
    killAction("solvedIsDown");
};

function killAction(targetId){
    targetId = document.getElementById(targetId);
    targetId.removeAttribute("onclick");
};
Вложения:
Тип файла: zip delTag.zip (1.3 Кб, 9 просмотров)
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2011, 09:18
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

xmapact, может, я не так понял задачу, но всё делается на раз проще:

<html>
	<body>
		<b><i>обычный <u>подчеркнутый</u></i></b>
		<input type='button' onclick='remove(document.getElementsByTagName("B")[0])' value='удалить bold' />
		<input type='button' onclick='remove(document.getElementsByTagName("I")[0])' value='удалить italic' />
		<script type='text/javascript'>
			function remove(element) {
				var parent = element.parentNode;
				while (element.firstChild)
					parent.insertBefore(element.firstChild, element);
				parent.removeChild(element);
			}
		</script>
	</body>
</html>
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КАк удалить тег с сожержимым clgs Общие вопросы Javascript 5 14.05.2010 08:57
Как удалить html тег по id? romosyto Я не знаю javascript 5 10.06.2009 18:54