Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.02.2011, 23:26
Новичок на форуме
Отправить личное сообщение для vasa666 Посмотреть профиль Найти все сообщения от vasa666
 
Регистрация: 23.02.2011
Сообщений: 8

Замена текста в атрибуте HTML тега, например часть url
Сразу скажу что в JavaScript не очень селён. Но поиском пользоватся умею! И прежде чем сюда писать, тут накопал вот этот кусок:

<script language="JavaScript" type="text/javascript">  
 function repl(a) {  
     var b = {  
         "111": "\u0437\u0430\u043c\u0435\u043d\u0430",  
        "222": "\u043f\u0440\u043e\u0448\u043b\u0430",  
         "333": "\u0443\u0441\u043f\u0435\u0448\u043d\u043e",  
         "4": "!7"  
     };   
     for (var c in b) {  
        var d = RegExp(c, "gim");  
         a = a.replace(d, b[c])  
     }  
    return a  
 };    
 
function who() {  
     all_elements = document.getElementsByTagName("*");  
     i = 0;  
     for (s = all_elements.length; i < s; i++) if (all_elements[i].tagName != "SCRIPT") {  
         j = 0;  
        for (s_ = all_elements[i].childNodes.length; j < s_; j++)  
         if (all_elements[i].childNodes[j].nodeType == 3)  
         all_elements[i].childNodes[j].data = repl(all_elements[i].childNodes[j].data)  
     }  
 };  
 </script>  
 
 </head>  
 <body>  
  <font color="#FF0000">111 222 333 444</font>  
 </body>  
 </html>


Но данный скрипт меняет текст только вне атрибутов тегов. А мне надо заменить текст в атрибуте. например тут:

<a href="http://www.javascript.ru/forum/111">ссылка рас</a>
<a href="http://www.javascript.ru/forum/222">ссылка два</a>
<a href="http://www.javascript.ru/forum/333">ссылка три</a>


Если не сложно, подскажите что и где нужно заменить в данном скрипте чтоб он мог применяться к атрибутам HTML тегов.
Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 23.02.2011, 23:50
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

<div....><a href="http://www.javascript.ru/forum/111">ссылка рас</a></div>
и меняй содержимое внутри тегов <div>
использовать можешь не только контейнеры
Ответить с цитированием
  #3 (permalink)  
Старый 24.02.2011, 00:09
Новичок на форуме
Отправить личное сообщение для vasa666 Посмотреть профиль Найти все сообщения от vasa666
 
Регистрация: 23.02.2011
Сообщений: 8

Неужели только так сложно? И не как нельзя взять url обработать его, и вернуть на место с заменённым фрагментом?
Ответить с цитированием
  #4 (permalink)  
Старый 24.02.2011, 00:49
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

попробуй получить его атрибут через document.getElementById(idэлемента).getAtt ribute(имя атрибута) и заменить через document.getElementById(idэлемента).setAtt ribute....

зачем такой сложный код в примере?
function who() {
all_elements = document.getElementsByTagName("*");
i = 0;
for (s = all_elements.length; i < s; i++) if (all_elements[i].tagName != "SCRIPT") {
j = 0;
for (s_ = all_elements[i].childNodes.length; j < s_; j++)
if (all_elements[i].childNodes[j].nodeType == 3)
all_elements[i].childNodes[j].data = repl(all_elements[i].childNodes[j].data)

}

очень много лишнего и не нужного-точнее всё

Последний раз редактировалось dmitriymar, 24.02.2011 в 01:05.
Ответить с цитированием
  #5 (permalink)  
Старый 24.02.2011, 01:25
Новичок на форуме
Отправить личное сообщение для vasa666 Посмотреть профиль Найти все сообщения от vasa666
 
Регистрация: 23.02.2011
Сообщений: 8

Ну пример показывал как он обрабатывает просто текст.. вне тегов.

только чтоб он сработал автоматом нада "who() " убрать.. я его уже просто вставлял от себя.. и забыл убрать )) я скрипт кнопкой включал..

На мой взгляд скрипт сам посебе удобный.. в одном месте читабельный массив что менять.. и на что менять. Ктому же там легко можно добавить вариантов.
Более легкого я ненашёл
Ответить с цитированием
  #6 (permalink)  
Старый 24.02.2011, 09:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

vasa666,
Вариант...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title></title>
<script language="JavaScript" type="text/javascript">
 function repl(a) {
     var b = {
         "111": "\u0437\u0430\u043c\u0435\u043d\u0430",
        "222": "\u043f\u0440\u043e\u0448\u043b\u0430",
         "333": "\u0443\u0441\u043f\u0435\u0448\u043d\u043e",
         "4": "!7"
     };
     for (var c in b) {
        var d = RegExp(c, "gim");
         a = a.replace(d, b[c])
     }
    return a
 };

function who() {
    all_elements = document.getElementsByTagName("a");
    for (var a = 0, c = all_elements.length; a < c; a++) {
        var b = all_elements[a].href;
        if (b) all_elements[a].href = repl(b)
    }
};
 window.onload=who
 </script>

 </head>
 <body>
  <a href="http://www.javascript.ru/forum/111">ссылка рас</a>
  <a href="http://www.javascript.ru/forum/222">ссылка два</a>
  <a href="http://www.javascript.ru/forum/333">ссылка три</a>
  </body>
 </html>
Ответить с цитированием
  #7 (permalink)  
Старый 24.02.2011, 10:18
Новичок на форуме
Отправить личное сообщение для vasa666 Посмотреть профиль Найти все сообщения от vasa666
 
Регистрация: 23.02.2011
Сообщений: 8

Работает! то что надо! спасибо большое)
Ответить с цитированием
Ответ



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

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