Изменить слово на странице
Люди, долго упорно искал как это сделать, ничего не нашол, и сделал сам:
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, время: 18:48. |