Изменить слово на странице
Люди, долго упорно искал как это сделать, ничего не нашол, и сделал сам:
document.body.innerHTML=document.body.innerHTML.replace("Привед", "HLO"); Всё бы ничего, только вот проблема, что если предварительно в текстовый инпут вставить текст, то после применения кода он исчезает (визде кроме ие). А радиоинпуты, пощёлканые после загрузки, приходят в своё начальное положение. Кароче все элементы формы приходят в начальное положение. Может кто подскажет другой способ замены любого слова на странице? Надо это для изменения языка на станице - хочу сделать мгновенный перевод. |
Цитата:
Так дела не делаются;) |
не, страничка маленькая - слов мало. Словарь всего 3 кб получается. Иначе можно было бы XMLHttpRequest-ом
|
Как вариант: рекурсивно пройдись по всем текстовым узлам и заменяй их nodeValue. Для кнопок используй свойство value.
|
Делаю
for (y=0; y<=document.all.length-1; y++) { alert(document.all[y].nodeType); } Он говорить что все элементы первого типа (ELEMENT_NODE) ... То есть текстовых элементов нет. :( Вот кусок штмл: <body><span>Привед</span> <table> <tr> <td><input id="radiofile" name="radiobutton" type="radio" value="radiobutton" />Ссылка</td> <td><input id="radiofile" name="radiobutton" type="radio" value="radiobutton" checked="checked" />Файл</td> </tr> </table> </body> |
document.all - нет такого, забудь про это.
function getAllTextNode(node){ for(var i=0, childs=node.childNodes; i<childs.length; i++){ if(childs[i].nodeType==3){ // Заменяем nodeValue элемента. alert(childs[i].nodeValue); }else if(childs[i].nodeType==1){ if(childs[i].type=='button' || childs[i].type=='text'){ alert(childs[i].value); // Заменяем value елемента. }else return getAllTextNode(childs[i]); } } } getAllTextNode(document.body); На работоспособность не тестил, но суть должна быть ясна. |
Спасибо! Помогло!
Хотя без document.all обойтись не пришлось :) for (y=0; y<=document.all.length-1; y++) { getAllTextNode(document.all[y]); } Иначе не работает |
document.all не везде работает... Тебе виднее...
|
Это я знаю
if (document.all) { objar = document.all; } else { objar = document.getElementsByTagName('*'); } |
Так почему бы сразу не использовать getElementsByTagName('*') ?
|
Часовой пояс GMT +3, время: 00:31. |