Javascript.RU

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

Смена текста на изображение
Добрый день, форумчане!
Появилась такая проблема: необходимо определённые слова на странице заменить изображением.
Создал объект и указал на него ссылку:

picTab = new Image();
picTab.src = "http://i294.photobucket.com/albums/mm119/lazarncane/1.gif";


Далее ищу нужные слова и пытаюсь их заменить:

window.onload=function(){

all_elements=document.getElementsByTagName('*');
for(i=0,s=all_elements.length;i<s;i++)
    if(all_elements[i].tagName!="SCRIPT")
        for(j=0,s_=all_elements[i].childNodes.length;j<s_;j++)
            if(all_elements[i].childNodes[j].nodeType==3)
                all_elements[i].childNodes[j].textContent=all_elements[i].childNodes[j].textContent.replace(/\[tab\]/g, picTab);
}


Но браузер в таком случае не воспроизводит объект, пишет только [object HTMLImageElement].

Подскажете, как с этим можно справится?

Я так понимаю, что этот код для инлайновых элементов, а не для объектов. Может вас не затруднит объяснить мне. Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2012, 14:28
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

вы про замыкания явно не слышали
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2012, 14:45
Аспирант
Отправить личное сообщение для mooni Посмотреть профиль Найти все сообщения от mooni
 
Регистрация: 01.09.2012
Сообщений: 35

Только мельком. Читал, но не особо то и понял.
Ответить с цитированием
  #4 (permalink)  
Старый 01.09.2012, 14:46
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

замыкание можно использовать что бы оптимизировать, но мне было влом его писать=)
<!DOCTYPE HTML>
<html>
  <head>
  
    <style>
      img {
        width:20px;
        height:20px;
      
      }
    
    </style>
  </head>
  <body>
    <div>
У этого термина существуют и другие значения, см. Земля (значения).
Земля́ — третья от Солнца планетаlol Солнечной системы, крупнейшая по диаметру, массе и плотности среди планет земной группы.
    </div>
    <div>
      Чаще всего упоминается как Мир, Голубая планета[4][5], иногда Терра (от лат. Terra). Единственное известное человеку на данный момент тело Солнечной системы в частности и Вселенной вообще, населённое живыми организмами.lol
      Научные данные указывают на то, что Земля образовалась из солнечной туманности около 4,54 миллиардов лет назад,[6][7][8][9] и вскоре после этого приобрела свой единственный естественный спутник — Луну. Жизнь появилась lol на Земле около 3,5 миллиардов лет назад. С тех пор биосфера Земли значительно изменила атмосферу и прочие абиотические факторы, обусловив количественный рост аэробных организмов, так же как и формирование озонового слоя, который вместе с магнитным полем Земли ослабляет вредную солнечную радиацию, тем самым сохраняя условия для жизни на Земле. Учитывая период полураспада радиоактивных элементов, радиация, обусловленная самой земной корой, снизилась ещё более значительно. Кора Земли разделена на несколько сегментов, или тектонических плит, которые постепенно мигрируют по поверхности за периоды во много миллионов лет. Приблизительно 70,8 % поверхности планеты занимает Мировой океан[10], остальную часть поверхности занимают континенты и острова.</div>
    <div>  
      Жидкая вода, необходимая для всех известных жизненных форм, не существует на поверхности какой-либо из известных планет и lol планетоидов Солнечной системы, кроме Земли. Внутренние области Земли достаточно активны и состоят из толстого, очень вязкого слоя, называемого мантией, которая покрывает жидкое внешнее ядро (которое и является источником магнитного поля Земли) и внутреннее твёрдое ядро, предположительно, железное.
    </div>
   <div> 
  Земля взаимодействует (притягивается гравитационными силами) с другими объектами в космосе, включая Солнце и Луну. Земля lol обращается вокруг Солнца и делает вокруг него полный оборот примерно за 365,26 дней. Этот отрезок времени — сидерический год, который равен 365,26 солнечным суткам. Ось вращения Земли наклонена на 23,4° относительно её орбитальной плоскости, это вызывает сезонные изменения на поверхности планеты с периодом в один тропический год (365,24 солнечных суток). Сутки сейчас составляют примерно 24 часа.</div> <div>Луна lol начала своё обращение на орбите вокруг Земли примерно 4,53 миллиарда лет назад, что стабилизировало осевой наклон планеты[источник не указан 141 день] и является причиной приливов, которые замедляют вращение Земли и отдаляют Луну. Некоторые теории полагают, что падения астероидов приводили к существенным изменениям в окружающей среде и поверхности Земли, в частности, массовые вымирания различных видов живых существ[11].
      </div>
      <script>
 
function FindReplace (word, img) {       

  var elements = document.body.getElementsByTagName('*');
  var element, html;
  var regE = new RegExp (word);

  for (var i = elements.length;i--;){
   
    element = elements[i]
    html = element.innerHTML; 
   
    if( html.search(regE)== -1) continue;
      
      
    element.innerHTML =  html.replace(regE,img)  
      
       
  
  }

    }
FindReplace('lol','<img src="http://ctrlc.ru/wp-content/uploads/2012/06/18.jpg" >')
    </script>

  </body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 01.09.2012, 14:54
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

как то так=)
<!DOCTYPE HTML>
<html>
  <head>
  
    <style>
      img {
        width:20px;
        height:20px;
      
      }
    
    </style>
  </head>
  <body>
    <div>
У этого термина существуют и другие значения, см. Земля (значения).
Земля́ — третья от Солнца планетаlol Солнечной системы, крупнейшая по диаметру, массе и плотности среди планет земной группы.
    </div>
    <div>
      Чаще всего упоминается как Мир, Голубая планета[4][5], иногда Терра (от лат. Terra). Единственное известное человеку на данный момент тело Солнечной системы в частности и Вселенной вообще, населённое живыми организмами.lol
      Научные данные указывают на то, что Земля образовалась из солнечной туманности около 4,54 миллиардов лет назад,[6][7][8][9] и вскоре после этого приобрела свой единственный естественный спутник — Луну. Жизнь появилась lol на Земле около 3,5 миллиардов лет назад. С тех пор биосфера Земли значительно изменила атмосферу и прочие абиотические факторы, обусловив количественный рост аэробных организмов, так же как и формирование озонового слоя, который вместе с магнитным полем Земли ослабляет вредную солнечную радиацию, тем самым сохраняя условия для жизни на Земле. Учитывая период полураспада радиоактивных элементов, радиация, обусловленная самой земной корой, снизилась ещё более значительно. Кора Земли разделена на несколько сегментов, или тектонических плит, которые постепенно мигрируют по поверхности за периоды во много миллионов лет. Приблизительно 70,8 % поверхности планеты занимает Мировой океан[10], остальную часть поверхности занимают континенты и острова.</div>
    <div>  
      Жидкая вода, необходимая для всех известных жизненных форм, не существует на поверхности какой-либо из известных планет и lol планетоидов Солнечной системы, кроме Земли. Внутренние области Земли достаточно активны и состоят из толстого, очень вязкого слоя, называемого мантией, которая покрывает жидкое внешнее ядро (которое и является источником магнитного поля Земли) и внутреннее твёрдое ядро, предположительно, железное.
    </div>
   <div> 
  Земля взаимодействует (притягивается гравитационными силами) с другими объектами в космосе, включая Солнце и Луну. Земля  обращается вокруг Солнца и делает вокруг него полный оборот примерно за 365,26 дней. Этот отрезок времени — сидерический год, который равен 365,26 солнечным суткам. Ось вращения Земли наклонена на 23,4° относительно её орбитальной плоскости, это вызывает сезонные изменения на поверхности планеты с периодом в один тропический год (365,24 солнечных суток). Сутки сейчас составляют примерно 24 часа.</div> <div>Луна lol начала своё обращение на орбите вокруг Земли примерно 4,53 миллиарда лет назад, что стабилизировало осевой наклон планеты[источник не указан 141 день] и является причиной приливов, которые замедляют вращение Земли и отдаляют Луну. Некоторые теории полагают, что падения астероидов приводили к существенным изменениям в окружающей среде и поверхности Земли, в частности, массовые вымирания различных видов живых существ[11].
      </div>
      <script>
 
function FindReplace (word, img) {       

  var elements = document.body.getElementsByTagName('*');
  var element, html, i = 0;
  var regE = new RegExp (word,'ig');
  var leng = elements.length;
  (function closing() {
   
    element = elements[i]
    html = element.innerHTML; 
   
    if( html.search(regE)== -1){
      
      end();
      return;
    }
      console.log(html.replace(regE,img))
    element.innerHTML =  html.replace(regE,img);  
      
       
    function end () {
     if (i > leng-1) return; 
      console.log(i > leng-1)
     i++;
     setTimeout(closing,0);
     }
   end(); 
  }());

    }
FindReplace('lol','<img src="http://ctrlc.ru/wp-content/uploads/2012/06/18.jpg" >')
    </script>

  </body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 01.09.2012, 14:57
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

но лучше это делать на пхп так как DOM элементы при перезаписи перезагружаются (картинки ... )
Ответить с цитированием
  #7 (permalink)  
Старый 01.09.2012, 15:01
Аспирант
Отправить личное сообщение для mooni Посмотреть профиль Найти все сообщения от mooni
 
Регистрация: 01.09.2012
Сообщений: 35

На пхп-то я бы это сделал, но вот проблема: это делается для форума, исходного кода нет, приходится выкручиваться javascript'ом. Сейчас попробовал ваш код. Сбивается разметка страницы.(
Ответить с цитированием
  #8 (permalink)  
Старый 01.09.2012, 15:02
Аспирант
Отправить личное сообщение для mooni Посмотреть профиль Найти все сообщения от mooni
 
Регистрация: 01.09.2012
Сообщений: 35

Был бы доступ к исходному коду форума, мне бы так вообще извращаться не пришлось.)
Ответить с цитированием
  #9 (permalink)  
Старый 01.09.2012, 15:04
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

эм...
т.е сбивается?
Ответить с цитированием
  #10 (permalink)  
Старый 01.09.2012, 15:07
Аспирант
Отправить личное сообщение для mooni Посмотреть профиль Найти все сообщения от mooni
 
Регистрация: 01.09.2012
Сообщений: 35


вот такая шляпа получается.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена изображение и текста Elena1441 Элементы интерфейса 2 13.08.2012 11:07
Смена цвета текста по кругу! JS_Den Общие вопросы Javascript 4 18.02.2012 14:39
Бесконечная смена цвета текста iGusse Элементы интерфейса 4 08.10.2011 22:03
Смена текста в ссылке krol jQuery 4 29.01.2011 20:42
Плавная смена текста NexGala Элементы интерфейса 2 22.08.2009 05:47