Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена текста в атрибуте HTML тега, например часть url (https://javascript.ru/forum/misc/15364-zamena-teksta-v-atribute-html-tega-naprimer-chast-url.html)

vasa666 23.02.2011 23:26

Замена текста в атрибуте 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 тегов.
Заранее спасибо.

dmitriymar 23.02.2011 23:50

<div....><a href="http://www.javascript.ru/forum/111">ссылка рас</a></div>
и меняй содержимое внутри тегов <div>
использовать можешь не только контейнеры

vasa666 24.02.2011 00:09

Неужели только так сложно? И не как нельзя взять url обработать его, и вернуть на место с заменённым фрагментом?

dmitriymar 24.02.2011 00:49

попробуй получить его атрибут через 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)

}

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

vasa666 24.02.2011 01:25

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

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

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

рони 24.02.2011 09:29

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>

vasa666 24.02.2011 10:18

Работает! то что надо! спасибо большое)


Часовой пояс GMT +3, время: 05:58.