Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.09.2010, 14:06
Аспирант
Отправить личное сообщение для artwalek Посмотреть профиль Найти все сообщения от artwalek
 
Регистрация: 11.12.2008
Сообщений: 44

Автоматический вывод иконки
Привет.
Нужна ваша помощь в регулярке.

Нужно после ссылки, которая если содержит один из трёх видов расширений выводилась иконка.

Пробую делать так:
<script type="text/javascript">
	function replace() {
		var url = (/\.(\w+)($|#|\?)/i); 
		var text = 'Тест /Staff/Common/HTMI/docs/cennosti.ppt';
		var result = text.match(url);
		if (result != null) {
			var fullurl = result[1];
			if (fullurl == "doc") {
				document.getElementById('t').innerHTML = text + "<img src='/info/images/word.gif'>";
			}
			else if (fullurl == "ppt") {
				document.getElementById('t').innerHTML = text + "<img src='/info/images/ppoint.gif'>";
			}
			else if (fullurl == "xls") {
				document.getElementById('t').innerHTML = text + "<img src='/info/images/excel.gif'>";
			}
			else {
				document.getElementById('t').innerHTML = text;
			}
		}
	}
</script>


Вроде всё в порядке, но стоит входным данным измениться например на
var text = '<p>Тест <a href="/Staff/Common/HTMI/docs/cennosti.ppt">/Staff/Common/HTMI/docs/cennosti.ppt</a> тут что-то ещё</p>';
скрипт не работает.

Помогите пожалуйста.
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 14.09.2010, 14:15
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

<script type="text/javascript">
	function replace() {
		var text = '<a href="/load-3457823758">example.rar</a>',
		result = text.match( /\.(rar|exe|mp3)/ );
		if ( result != null ) {
			document.getElementById( 't' ).innerHTML = text + '<img src="/icons' + result[1] + '.png" />';
		}
	}
</script>


/.(rar|exe|mp3)/ — здесь пишите через | список форматов.

В папку icons залить изображения с именами, соответствующими формату файла, например, rar.png
Ответить с цитированием
  #3 (permalink)  
Старый 14.09.2010, 15:46
Аспирант
Отправить личное сообщение для artwalek Посмотреть профиль Найти все сообщения от artwalek
 
Регистрация: 11.12.2008
Сообщений: 44

exec, спасибо, а как сделать чтобы после ссылки была иконка? В данной реализации иконка будет после основного текста.
Ответить с цитированием
  #4 (permalink)  
Старый 14.09.2010, 17:24
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

target.parentNode.insertBefore( element, target.nextSibling );


target — после какого элемента ставить, element — элемент для вставки.

Полный код не могу привести, т.к. непонятно, после какой ссылки вставлять.
Ответить с цитированием
  #5 (permalink)  
Старый 15.09.2010, 11:12
Аспирант
Отправить личное сообщение для artwalek Посмотреть профиль Найти все сообщения от artwalek
 
Регистрация: 11.12.2008
Сообщений: 44

К примеру вот такая строка
var text = '<p>Тест <a href="/Staff/Common/HTMI/docs/cennosti.ppt">ссылка<a/> здесь что-то еще будет</p>';


Соответственно сразу после ссылки /Staff/Common/HTMI/docs/cennosti.ppt нужно вставить иконку ppt.gif
Ответить с цитированием
  #6 (permalink)  
Старый 15.09.2010, 12:15
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Нужен DOM-элемент, а не строка.
Ответить с цитированием
  #7 (permalink)  
Старый 15.09.2010, 14:20
Аспирант
Отправить личное сообщение для artwalek Посмотреть профиль Найти все сообщения от artwalek
 
Регистрация: 11.12.2008
Сообщений: 44

Делаю в xsl:
<msxsl:script
    language="JavaScript"
    implements-prefix="ext">

<![CDATA[
	function matchurl(text) {
		var txt = text[0].text.substr(0);
		result = txt.match(/\.(doc|ppt|xls)/);
		if (result != null) {  
			return txt + '<img src="/Info/images/' + result[1] + '.gif" />';
		}
		else {
			return txt;
		}
	}
]]>
</msxsl:script>


Вызываю:
<p style="clear: both;"><xsl:value-of select="ext:matchurl(rss/channel/item/text)" disable-output-escaping="yes" /></p>


В узле text содержится примерно та строка, которую привёл ранее.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод данных из mysql Евген AJAX и COMET 3 22.08.2010 17:55
вывод картинки и vrml mister_maxim Events/DOM/Window 16 12.01.2010 17:40
Автоматический вывод всех изображений Stalker Общие вопросы Javascript 5 10.07.2009 13:27
Пошаговый вывод скрипта для IE всех версий. Zidky Элементы интерфейса 10 17.06.2009 18:27
автоматический вывод полей nastya Общие вопросы Javascript 5 10.02.2009 07:20