Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z innerHTML.replace
kowalcook
post 28.08.2008, 00:18:58
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 17.11.2005

Ostrzeżenie: (0%)
-----


mam taki oto kod


  1. document.getElementById('id').innerHTML = document.getElementById('id').innerHTML.replace('\n','<br>').replace('biggrin.gif','<img src=\"smiles/icon_biggrin.gif\" border=\"0\" alt=\"Szczęśliwy\" title=\"Szczęśliwy\" style=\"margin-bottom:-6px;\" />')



mam sobie taki oto wycinek funkcji

powinno
zamieniać wartości znaku wejściowego na wyjściowe..., to robi poprawnie lecz gdy podaje w jednym polu kilka razy tą samą wartość już nie działa

  1. :
  2. przykład:
  3. znak biggrin.gif ma zamienić na grafikę i to robi, ale jak dam biggrin.gif biggrin.gif to pierwszą wartość zamieni prawidłowo a drugiej już nie ruszy, dlaczego ?



drugi problem to jak daje wartości dla replase łamania linii \n jak wpisałem powyżej to skrypt się wiesza i nie działa jakby nie trawił znaku \

próbowałem na wiele sposobów


'\n'
\n
/\n/g
'/\n/g'


i nic nie działa czy ktoś moze mi powiedzieć co mu tam nie pasuje ?

Ten post edytował kowalcook 28.08.2008, 00:22:30
Go to the top of the page
+Quote Post
tiraeth
post 28.08.2008, 01:09:45
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Łamanie linii:
Kod
document.getElementById('id').innerHTML = document.getElementById('id').innerHTML.replace(/\n/g, '<br />');

Także wyrażenia regularne. Nawet podałeś w sposobach... Problem może polegać na tym, że możesz mieć windowsowy lub macowy znak końca linii (\r\n lub \r). A wieszać się nie powinno. U mnie to działa.

Zastępowanie wielu wyrażeń:
Kod
document.getElementById('id').innerHTML = document.getElementById('id').innerHTML.replace(/:)/g, ':(');

Należy użyć wyrażenia regularnego z flagą g

http://www.w3schools.com/jsref/jsref_replace.asp
Go to the top of the page
+Quote Post
kowalcook
post 28.08.2008, 01:50:27
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 17.11.2005

Ostrzeżenie: (0%)
-----


dzieki wielkie za pomoc smile.gif


kwestia dublowania dla replace już załatwiona flaga /g rzeczywiście pomogła





a co do tej łamanej linii to nie mam pojęcia co się dzieje nie tak



może konkretniej już przybliżę jak to robię



wiec mam opcję podglądu edycji w czasie rzeczywistym na forum


czyli z textarea pobiera znaki jakie wpisuje user i przetwarza je w div z przypisanym id w formie texowej



  1. function edycjaOnline(){
  2.  
  3. document.getElementById('poleEdycjiOnline').innerHTML = document.post.text.value
  4. document.getElementById('poleEdycjiOnline').innerHTML = document.getElementById('poleEdycjiOnline').innerHTML.replace(/:D/g,'<img src=\"sciezka/img/smiles/icon_biggrin.gif\" border=\"0\" alt=\"Szczęśliwy\" title=\"Szczęśliwy\" style=\"margin-bottom:-6px;\" />').replace(/\n/g,'<br>')
  5.  
  6. }




no a że się wiesza wiem gdyż gdy dam ten wycinek kodu
  1. .replace(/\n/g,'<br>')

przestają działać wszystkie funkcje java dla tej podstrony
wiec tam musi mieć coś nie tak, chyba że on ma problem że wyczytuje to z pola textarea



jak sądzicie ?










//EDIT


  1. .replace(/\\n/gi, '<br>')



to pomogło smile.gif
czyli dwa backslashe a nie jeden przed łamaniem linii

może sie to komuś przydać smile.gif




dzieki ci za pomoc tiraeth jeszcze raz

pozdrawiam

Ten post edytował kowalcook 28.08.2008, 13:39:16
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 10:14