[DHTML] zamiana zawartości pomiędzy dwoma <div>

0

Witam

Mam dwa obiekty typu

, rozmieszczone w dwóch różnych miejscach strony html. W każdym
znajduje się dajmy na to jakiś obrazek i tekst. Każdy z div'ów znajduje się w innej komórce tabeli. Teraz chciałbym zamienić zawartość tych dwóch div'ów, tak żeby w pierwszym była zawartość drugiego, a w drugim zawartość pierwszego. Ktoś ma pomysł / wie jak zrobić takie coś?</p>
0

weź JavaScript i pobaw się właściwością innerHTML/outerHTML - pierwsza pozwala ustawić/uzyskać tekst wewnątrz tagów <div> i </div>, a druga - łącznie z tymi tagami

nie wiem tylko, czy to działa na wszystkich przeglądarkach :/

0
Jojersztajner napisał(a)

weź JavaScript i pobaw się właściwością innerHTML/outerHTML - pierwsza pozwala ustawić/uzyskać tekst wewnątrz tagów <div> i </div>, a druga - łącznie z tymi tagami

nie wiem tylko, czy to działa na wszystkich przeglądarkach :/

a ja tylko powtorze, zapomnijcie o innerHTML itp... bo jak przyjdzie XHTML to sie obudzicie z reka w nocniku :D lepiej od razu uczyc sie dobrych nawykow...

<script>
function exchange() {
  var div1, div2, docFrag, moveChildren;
  moveChildren = function(obj1, obj2) {
    while (obj1.hasChildNodes()) {
      obj2.appendChild(obj1.firstChild);
    }
  }
  div1 = document.getElementById('div1');
  div2 = document.getElementById('div2');
  docFrg = document.createDocumentFragment();
  moveChildren(div1, docFrg);
  moveChildren(div2, div1);
  moveChildren(docFrg, div2);
}
</script>
<div id="div1"> 
  Text1 
  <a href="">Link1</a>
  <img src="" alt="Obr1"/>
</div>
<div id="div2">
  Text2
  <a href="">Link2</a>
  <img src="" alt="Obr2"/>
</div>
<a href="javascript:exchange()">Zamien</a>
0
piechnat napisał(a)

a ja tylko powtorze, zapomnijcie o innerHTML itp... bo jak przyjdzie XHTML to sie obudzicie z reka w nocniku :D lepiej od razu uczyc sie dobrych nawykow...

Nie mówię, że innerHTML jest najlepszymj rozwiązaniem, ale działa wyśmienicie w XHTML 1.1, nie czepia się również żaden validator ani konsola JS. Trzeba tylko odpowiednio to stosować.

0
Adam.Pilorz napisał(a)

Nie mówię, że innerHTML jest najlepszymj rozwiązaniem, ale działa wyśmienicie w XHTML 1.1, nie czepia się również żaden validator ani konsola JS. Trzeba tylko odpowiednio to stosować.

no faktycznie [browar] kiedys tak nie bylo, jeszcze z pol roku temu moj FF nie obslugiwal innerHTML w xHTML, a tu sie okazalo jak pisze Wikipedia:

Ze względu na trudności z parsowaniem, nie powinno się używać w XHTML-u javascriptowej metody document.write() i właściwości innerHTML; jednak niektóre przeglądarki już obsługują te konstrukcje także w dokumentach XML.

no to dalem ciala :D

[dopisane]

chociaz moze nie do konca:

Netscape 8.0.4 nie daje sobie rady z innerHTML, moze jest wiecej takich przegladarek...

0

Oczywiście zazwyczaj lepiej używać modelu DOM, ale czasem to zbytnia zabawa. Swoją drogą zaskoczyło mnie, że przeglądarki nie radzą sobie z innerHTML - Wydaje mi się, że jest to najprostszy sposób na modyfikację strony w locie (operowanie na DOM wymusza obiektowe podejście do strony, zmiana innerHTML wymaga od przeglądarki tylko zrozumienia gdzie element strony się zaczyna, a gdzie kończy, patrząc na kod strony).

Swoją drogą - można by do tego podejść tak, że JS w ogóle nie powinno się używać, bo lynx sobie z nim nie radzi - osobiście widzę więcej powodów, które mogą zmuszać ludzi do używania lynksa niż Netscape'a :).

0
Adam.Pilorz napisał(a)

Swoją drogą zaskoczyło mnie, że przeglądarki nie radzą sobie z innerHTML - Wydaje mi się, że jest to najprostszy sposób na modyfikację strony w locie

Zauważ, że w dokumentach html błędy są dopuszczalne a w przypadku xhtml/xml błąd składniowy uniemożliwia pokazanie całej strony, pewnie z tego samego powodu innerHTML w tym trybie nie działał w przeglądarkach (i nadal nie działa w Netscape'ie), moje osobiste zdanie jest takie, że innerHTML, powinni usunąć, JS nie powinien mieć możliwości ingerowania w strukturę dokumentu XML na poziomie kodu źródłowego.

0

Tak... Ale jak wygodnie jest webmasterowi podmienić gdzieś fragment kodu zamiast zgłębiać tajniki wszystkich metod modelu DOM :). Oczywiście zakładam, że "wstrzykiwany" kod jest poprawny, inaczej to nie ma sensu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1