ие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. В чем косяк? |
1) Берешь элемент div.
2) Клонируешь через cloneNode(true) 3) Обходишь ссылки, заменяешь их спанами через replaceChild 4) Выводишь innerHTML И никаких регулярок ) (стоит отметить что код получится медленней чем на регулярках, но если у нас не цикл - повода беспокоиться нет) |
В ИЕ теги HTML типично считываются без кавчек в Атрибутах и сами теги большими буквами, т.е в регулярке нужно кавычки ставить по вопросом "? и переводить к единому регистру /i
|
<!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,
link = links[i] ?? может link = links[0] или обратный счёт с конца links |
рони, да, ты прав. Поправил код. Только иначе.
|
Часовой пояс GMT +3, время: 06:01. |