Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.07.2013, 17:49
Аспирант
Отправить личное сообщение для alexandr2006 Посмотреть профиль Найти все сообщения от alexandr2006
 
Регистрация: 30.01.2013
Сообщений: 54

ие78 и регулярные выражения
<!DOCTYPE HTML>
<html>
 <head>
  <title> New Document </title>
 </head>
 
 <body>
 
<div id="rub0_133165" class="small readed" style="height: 323px;">
 
            
            <h1>
                <a class="view_full" href="/news/133165-tragediya-v-seme-dzheymsa-bonda-pirs-brosnan-poteryal-priemnuyu-doch">Трагедия в семье "Джеймса Бонда": Пирс Броснан потерял приемную дочь</a>  
                <a target="_blank" class="source_news" href="http://http://www.newsru.com">NEWSru.com</a>,  
                сегодня в 10:19            </h1>
 
            <p>41-летняя Шарлотта скончалась от рака яичников - болезни, ранее убившей ее мать и бабушку. Мать Шарлотты, австралийская актриса Кассандра Харрис вышла замуж за Пирса Броснана в 1980 году, имея двоих детей от предыдущего брака - Шарлотту и Кристофера. Вскоре Броснан усыновил детей своей возлюбленной.</p>
        </div>
 
 <script>
 var str=document.getElementById("rub0_133165").innerHTML;
alert('<article>'+str.replace(/<a[^>]*?class="view_full".*?>(.*?)<\/a>/g,'<span>$1</span>').replace(/<a [^>]*?class="source_news".*?>(.*?)<\/a>/,'<span>$1</span>')+'</article>');
  </script>
 </body>
</html>




А именно: хочу взять то, что внутри тега div и вывести на экран заменив ссылки тегом span. Работает везде, кроме ие 7-8.

В чем косяк?
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2013, 18:18
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

1) Берешь элемент div.
2) Клонируешь через cloneNode(true)
3) Обходишь ссылки, заменяешь их спанами через replaceChild
4) Выводишь innerHTML

И никаких регулярок )
(стоит отметить что код получится медленней чем на регулярках, но если у нас не цикл - повода беспокоиться нет)
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2013, 19:38
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

В ИЕ теги HTML типично считываются без кавчек в Атрибутах и сами теги большими буквами, т.е в регулярке нужно кавычки ставить по вопросом "? и переводить к единому регистру /i
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2013, 19:55
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<!DOCTYPE html>
<div id="rub0_133165" class="small readed" style="height: 323px;">
    <h1>
        <a class="view_full" href="/news/133165-tragediya-v-seme-dzheymsa-bonda-pirs-brosnan-poteryal-priemnuyu-doch">Трагедия в семье "Джеймса Бонда": Пирс Броснан потерял приемную дочь</a> 
        <a target="_blank" class="source_news" href="http://http://www.newsru.com">NEWSru.com</a>, 
        сегодня в 10:19            </h1>

    <p>41-летняя Шарлотта скончалась от рака яичников - болезни, ранее убившей ее мать и бабушку. Мать Шарлотты, австралийская актриса Кассандра Харрис вышла замуж за Пирса Броснана в 1980 году, имея двоих детей от предыдущего брака - Шарлотту и Кристофера. Вскоре Броснан усыновил детей своей возлюбленной.</p>
</div>
  
<script>
var source = document.getElementById("rub0_133165");

var clone = source.cloneNode(true);

var links = clone.querySelectorAll('a');
for (var i = 0, link; link = links[i]; i++) {
    var span = document.createElement('span');
    span.innerHTML = link.innerHTML;
    link.parentNode.replaceChild(span, link);
}
alert('<article>' + clone.innerHTML + '</article>');
</script>

Последний раз редактировалось danik.js, 02.07.2013 в 21:44.
Ответить с цитированием
  #5 (permalink)  
Старый 02.07.2013, 20:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от alexandr2006
В чем косяк?
может алерт заблокирован? если алерт работает тогда версия Deff,
Ответить с цитированием
  #6 (permalink)  
Старый 02.07.2013, 20:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

danik.js,
link = links[i] ??
может link = links[0] или обратный счёт с конца links

Последний раз редактировалось рони, 02.07.2013 в 20:26.
Ответить с цитированием
  #7 (permalink)  
Старый 02.07.2013, 21:44
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

рони, да, ты прав. Поправил код. Только иначе.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения maksim_bezgodov Общие вопросы Javascript 6 20.06.2013 11:28
Регулярные выражения alex2012 Общие вопросы Javascript 5 23.02.2013 19:49
Регулярные выражения для javascript qwert_ukg Общие вопросы Javascript 3 20.04.2012 13:45
нежадные регулярные выражения KOLANICH Общие вопросы Javascript 2 12.12.2010 01:08
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35