Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.10.2009, 11:47
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

Изменить слово на странице
Люди, долго упорно искал как это сделать, ничего не нашол, и сделал сам:
document.body.innerHTML=document.body.innerHTML.replace("Привед", "HLO");

Всё бы ничего, только вот проблема, что если предварительно в текстовый инпут вставить текст, то после применения кода он исчезает (визде кроме ие). А радиоинпуты, пощёлканые после загрузки, приходят в своё начальное положение. Кароче все элементы формы приходят в начальное положение.

Может кто подскажет другой способ замены любого слова на странице? Надо это для изменения языка на станице - хочу сделать мгновенный перевод.

Последний раз редактировалось arma, 28.10.2009 в 11:51.
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2009, 12:55
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от arma
Надо это для изменения языка на станице - хочу сделать мгновенный перевод.
И весь словарь грузить в JS?!
Так дела не делаются
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2009, 13:00
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

не, страничка маленькая - слов мало. Словарь всего 3 кб получается. Иначе можно было бы XMLHttpRequest-ом
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2009, 13:13
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Как вариант: рекурсивно пройдись по всем текстовым узлам и заменяй их nodeValue. Для кнопок используй свойство value.
Ответить с цитированием
  #5 (permalink)  
Старый 28.10.2009, 14:52
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

Делаю
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>
Ответить с цитированием
  #6 (permalink)  
Старый 28.10.2009, 15:11
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

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);


На работоспособность не тестил, но суть должна быть ясна.

Последний раз редактировалось B~Vladi, 28.10.2009 в 15:18.
Ответить с цитированием
  #7 (permalink)  
Старый 28.10.2009, 15:46
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

Спасибо! Помогло!
Хотя без document.all обойтись не пришлось

for (y=0; y<=document.all.length-1; y++)
			{
			getAllTextNode(document.all[y]);
			}

Иначе не работает
Ответить с цитированием
  #8 (permalink)  
Старый 28.10.2009, 16:06
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

document.all не везде работает... Тебе виднее...
Ответить с цитированием
  #9 (permalink)  
Старый 28.10.2009, 17:04
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

Это я знаю
if (document.all) 
	{
   objar = document.all;
	}
else 
	{
   objar = document.getElementsByTagName('*');
	}
Ответить с цитированием
  #10 (permalink)  
Старый 28.10.2009, 17:08
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Так почему бы сразу не использовать getElementsByTagName('*') ?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Два одинаковых сценария на одной странице Genetics Общие вопросы Javascript 7 12.07.2009 01:46
Возможно ли javascript'ом отметить всё radio-кнопки на странице? javascript_pupil Events/DOM/Window 7 06.07.2009 23:20
Закрепить скрипт на странице! Tveretina Я не знаю javascript 2 28.05.2009 05:02
Скрытие текста на странице за ссылкой Vlad44 Общие вопросы Javascript 2 13.01.2009 18:02
Ссылка на якорь на странице во фрейме niculins Общие вопросы Javascript 2 24.09.2008 12:23