Алгоритм парсинга
есть примерно следующий кусок кода:
<em> знач.1 </em> <br> <em>знач.2 </em> <em> <br> знач.3 </em> <br> <em>знач.4</em> То есть, несколько тэгов em, следующих друг за другом или прерывающиеся тэгом br. Требуется преобразовать этот код вот в такой: <em> знач.1 <br> знач.2 <br> знач.3 <br> знач.4</em> То есть, весь текст всунуть в одну пару тэгов em. Как в принципе, какими способами подобные задачи решаются, какие функции используются? Подскажите, плиз, алгоритм парсинка документа |
Цитата:
- пройтись по em, начиная со второго - взять его текст и вставить в первый em вместе с <br /> - удалить "отработанный" em |
А как пройтись начиная со второго? Обычно прохожусь each, но со второго - это нужно вводить счетчик? Или есть какие-то способы попроще?
Затем, как пометить первый первым, чтобы потом в него что либо вставлять? |
Цитата:
Цитата:
http://jquery-docs.ru/Core/each/ Цитата:
Цитата:
|
Спасибо большое!
|
А еще такой вопрос. Как найти элемент, идущий сразу после какого-то другого? Сейчас гуглю, но пока чего-то не нахожу.
Например, если в коде встречается конструкция <em><br>...</em>то <br> удаляем. Но только если br идет сразу после em. Без промежуточного текста, тэгов и прочее. В такой конструкции <em>бла-бла<br>...</em>br удалятся уже не должен. |
зверек,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function() { var a = $("em:first"), b = $("em:last"), c = []; a.nextUntil(b).add(a).add(b).contents().each(function() { var a = $.trim($(this).text()); a && c.push(a) }); a.html(c.join("<br>")); a.nextUntil(b).add(b).remove(); alert($("body").html()) }); </script> </head> <body> <em> знач.1 </em> <br> <em>знач.2 </em> <em> <br> знач.3 </em> <br> <em>знач.4</em> </body> </html> |
Цитата:
https://learn.javascript.ru/traversing-dom |
пытаюсь разобраться с этим nextSibling
почему не работает вот такая конструкция var el = document.querySelectorAll('em'); while(next_em = el.nextSibling) console.log(next_em.tagName); хотелось получить список всех тэгов, которые идут после em. Но ничего не выводится. |
рони,
круто, спасибо! |
Часовой пояс GMT +3, время: 01:06. |