Witam
Mam dwa obiekty typu
Witam
Mam dwa obiekty typu
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 :/
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 tagaminie 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>
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ć.
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...
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 :).
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.
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.