Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сделать ссылку в тексте кликабельной, внутри определенного тега 
V
    Опции темы
nule
Дата 7.11.2011, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 3.11.2011

Репутация: нет
Всего: нет



Не только запускал, но и изучал.
Добавил регулярку, т.к. может присутствовать произвольный текст.
И вот почти конечный вариант:
Код

var td = document.getElementsByTagName("td");
var re = /https?\:\/\/w*\.*(?:rapidshare|filesonic)\.(?:com|net)[\w\d:#@%/;$()~_?\+-=\\\.&]*/gi
urls = new Array();
for (i=0; i<td.length; i++ ){
if (td[i].className == "code"){
if(!td[i].getElementsByTagName("a").length){
while ((urls = re.exec(td[i].innerHTML))!= null){
td[i].innerHTML=td[i].innerHTML.replace(re, '<a href="$1">$1</a>');
}
}
}
}

Работает, как мне надо, за исключением всё того же момента. Ссылки заменяет не на ссылки, а на $1. Кавчки я разные пробовал в разных комбинациях.
$дмитрий, не могли бы Вы уточнить ваш ответ на этот вопрос?
PM MAIL   Вверх
$дмитрий
Дата 8.11.2011, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



nule, чтобы заработало замени регулярку
Код

var re = /(https?\:\/\/w*\.*(?:rapidshare|filesonic)\.(?:com|net)[\w\d\:#@%/;$()~_?\+-=\\\.&]*)/gi

Про кавычку - недосып smile

Это сообщение отредактировал(а) $дмитрий - 8.11.2011, 07:28
PM MAIL   Вверх
nule
Дата 8.11.2011, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 3.11.2011

Репутация: нет
Всего: нет



Цитата($дмитрий @ 8.11.2011,  07:26)
nule, чтобы заработало замени регулярку
Код

var re = /(https?\:\/\/w*\.*(?:rapidshare|filesonic)\.(?:com|net)[\w\d\:#@%/;$()~_?\+-=\\\.&]*)/gi

Про кавычку - недосып smile

Спасибо, понял. Запоминающие скобки.
Но теперь новая напасть.
Код

var re = /https?(\:\/\/w*\.*(?:rapidshare|filesonic)[\w\d:#@%/;$()~_?\+-=\\\.&]*)/gi

Вот так выводит нормально (без http, разумеется).
Если же вять в скобки всё выражение то сценарий заклинит, а на экран вывалится
Код

    https://rapidshare.com/files/1439011131/New_folder__2_.rar%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a">https://rapidshare.com/files/1439011131/New_folder__2_.rar%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a>">https://rapidshare.com/files/1439011131/New_folder__2_.rar%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a%3E>">https://rapidshare.com/files/1439011131/New_folder__2_.rar%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a%3E%3C/a">https://rapidshare.com/files/1439011131/New_folder__2_.rar%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a%3C/a>>">https://rapidshare.com/files/1439011131/New_folder__2_.rar%3C/a%3C/a%3C/a%3C/a%3C
............................................................................................................................................и т.д.

Если же в скобки взять только https?(\:\/\/w*\.* то тоже всё нормально.
Это можно как-то объяснить?
PM MAIL   Вверх
$дмитрий
Дата 8.11.2011, 13:20 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



nule, экранируй двоеточие
PM MAIL   Вверх
nule
Дата 8.11.2011, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 3.11.2011

Репутация: нет
Всего: нет



Цитата($дмитрий @ 8.11.2011,  13:20)
nule, экранируй двоеточие

Вы имеете ввиду двоеточие в этом выражении [\w\d:#@%/;$()~_?\+-=\\\.&]?
\: не помогает.
PM MAIL   Вверх
$дмитрий
Дата 8.11.2011, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



Код

var re = /https?\:\/\/(w*\.*(?:rapidshare|filesonic)\.(?:com|net)[\w\d\:#@%/;$()~_?\+-=\\\.&]*)/gi;

PM MAIL   Вверх
nule
Дата 8.11.2011, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 3.11.2011

Репутация: нет
Всего: нет



Не помогает. Тоже самое.
PM MAIL   Вверх
$дмитрий
Дата 8.11.2011, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



Запости итоговый код
PM MAIL   Вверх
nule
Дата 8.11.2011, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 3.11.2011

Репутация: нет
Всего: нет



Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="ltr">
<head>
</head>
<body style="height: 100%;">
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tr>
<td><span class="genmed"><strong>Code:</strong></span></td>
<td class="code">https://rapidshare.com/files/1439011131/New_folder__2_.rar ggfffffffffffff
http://rapidshare.net hthjhtt</td> 
<td class="code">https://www.filesonic.com/files/1439011131/New_folder__2_.rar</td>
<td class="code">httttttth http://rapidshare.com/files ytthn jjjjjj <a name="top" id="top"></a></td>
</tr>
<tr>
</td></tr></table>

<script LANGUAGE="JavaScript"> 

// function codelinks()
//{
var td = document.getElementsByTagName("td");
var re = /https?\:\/\/w*\.*(?:rapidshare|filesonic)[\w\d:#@%/;$()~_?\+-=\\\.&]*/gi;
urls = new Array();
for (i=0; i<td.length; i++ ){
if (td[i].className == "code"){
if(!td[i].getElementsByTagName("a").length){
while ((urls = re.exec(td[i].innerHTML))!= null){
td[i].innerHTML=td[i].innerHTML.replace(re, '<a href="$1">$1</a>');
}
}
}
}
//}
//window.onload = codelinks;

</SCRIPT>
</body></html>

Вот всё что есть.
PM MAIL   Вверх
Lols
Дата 8.11.2011, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 21.10.2011

Репутация: нет
Всего: нет



У меня какая-то ерунда получается при тестировании...
PM MAIL   Вверх
$дмитрий
Дата 8.11.2011, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



Лови
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="ltr">
<head>
</head>
<body style="height: 100%;">
<table width="90%" cellspacing="1" cellpadding="3" border="0" align="center">
<tr>
<td><span class="genmed"><strong>Code:</strong></span></td>
<td class="code">https://rapidshare.com/files/1439011131/New_folder__2_.rar ggfffffffffffff
http://rapidshare.net hthjhtt</td>
<td class="code">https://www.filesonic.com/files/1439011131/New_folder__2_.rar</td>
<td class="code">httttttth http://rapidshare.com/files ytthn jjjjjj <a name="top" id="top"></a></td>
</tr>
<tr>
</td></tr></table>
<script LANGUAGE="JavaScript">
// function codelinks()
//{
var td = document.getElementsByTagName("td");
var re = /(https?\:\/\/)(w*\.*(?:rapidshare|filesonic)[\w\d\:#@%/;$()~_\?\+\-=\\\.&]*)/gi;
urls = new Array();
for (i=0; i<td.length; i++ ){
    if (td[i].className == "code"){
        if(!td[i].getElementsByTagName("a").length){
            //while ((urls = re.exec(td[i].innerHTML))!= null){
                td[i].innerHTML=td[i].innerHTML.replace(re, '<a href="$1$2">$2</a>');
            //}
        }
    }
}
//}
//window.onload = codelinks;
</SCRIPT>
</body></html>

PM MAIL   Вверх
nule
Дата 8.11.2011, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 3.11.2011

Репутация: нет
Всего: нет



Огромное спасибо! Всё работает. While действительно был лишним. Это был пережиток предыдущих так сказать версий.
Кстати, без этого цикла ухищрения $1$2 уже не нужны. Прекрасно работает одна пара запоминающих скобок.

Добавлено через 7 минут и 31 секунду
Цитата(Lols @ 8.11.2011,  17:53)
У меня какая-то ерунда получается при тестировании...

Так там ерунда и получалась smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0818 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.