Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosty skrypt zamieniajacy tagi - problem
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
gazelek
Witam,

mam napisany prosty skrypt forum i jako edytor uzyty w nim jest TinyMCE. Chcialem wprowadzic do niego poprawke uniemozliwiajaca edycje tresci cytatu, a dopuszczajaca jedynie jego przelamanie. Ale oszczedze tutaj przykladow kodu smile.gif

Zadanie nieco uproscilem i postanowilem najpierw zmontowac sobie lokalnie. I tak mam ponizszy kod:

Kod
<blockquote id="txt"><p>Test</p><p>Test</p></blockquote>

<script type="text/javascript">
var el = document.getElementById("txt").innerHTML;
el = el.replace('</p><p>', '</p></blockquote><p>&nbsp;</p><blockquote><p>');
document.getElementById("txt").innerHTML = el;
</script>


Wynik powinien byc taki:
Kod
<blockquote id="txt">
<p>Test</p>
</blockquote>
<p>&nbsp;</p>
<blockquote><p>Test</p>
</blockquote>


a jest:
Kod
<blockquote id="txt">
<p>Test</p>
<p>&nbsp;</p>
<blockquote><p>Test</p>
</blockquote>
</blockquote>


Wydaje mi sie ze przegladarka poprawia jakos html, ale nie za bardzo wiem czemu powyzszy kod nie dziala...
gothye
  1. $("#txt").html(ul) ; ?
wdev
Cytat(gazelek @ 13.07.2011, 09:09:36 ) *
Witam,

mam napisany prosty skrypt forum i jako edytor uzyty w nim jest TinyMCE. Chcialem wprowadzic do niego poprawke uniemozliwiajaca edycje tresci cytatu, a dopuszczajaca jedynie jego przelamanie. Ale oszczedze tutaj przykladow kodu smile.gif

Zadanie nieco uproscilem i postanowilem najpierw zmontowac sobie lokalnie. I tak mam ponizszy kod:

Kod
<blockquote id="txt"><p>Test</p><p>Test</p></blockquote>
<script type="text/javascript">
var el = document.getElementById("txt").innerHTML;
el = el.replace('</p><p>', '</p></blockquote><p>&nbsp;</p><blockquote><p>');
document.getElementById("txt").innerHTML = el;
</script>


Twój problem polega na tym, że nie bardzo rozumiesz jak jest zbudowany DOM. To nie jest tylko i wyłącznie kawałek tekstu w formacie HMLT, z którym możesz robić co Ci się podoba, tylko jego ustrukturyzowana obiektowa reprezentacja. Jeżeli masz już jakiś fragment zbudowany, w tym wypadku tag blockquote, to prosta zmiana innerHTML nie zmieni Ci całej struktury łącznie z tagami okalającymi. Przeglądarka stara się dostosować do Twojego polecania modyfikując innerHTML, czyli wewnętrzny html w tym blockquote. To co musisz zrobić, to - wziąć parentNode tego #txt, znaleźć oba p, wyciąć drugie p z blockquote, zapakować we własny tag blockauote i dorzucić jako child do parentNode.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.