czy jakiś dobry człowiek...

w dziale Opera
siersc napisał(a):

nie wdając się w głębsze dyskusje odnośnie uniwersalności poniższego kodu jak i jego zgodności z W3C chciałbym się zapytać znawców dlaczego poniższy przykład nie działa prawidłowo i czy to tylko u mnie:

------------------------------------------------------
<html><head></head>
<body text=gray>

<script language="Javascript">

</script>

<div><div onClick="expandit(this)">CCC</div><span style="display:none">ooo</span></div>

<div><div onClick="expandit(this)">CCC</div>
<span style="display:none">ooo</span></div>

</body></html>
-----------------------------------------
oczywiście można napisać coś lepszego itd., ale chodzi mi o właśnie ten konkretny przypadek: pierwsza sekcja <div> jest zapisana w jednej linii i nie działa, a druga IDENTYCZNA z małym wyjątkiem: jest linia złamana po </div> - działa!

druga sprawa: dlaczego skrypt ten nie działa przy "wyglądzie użytkownika"? - tzn. dlaczego w widoku użytkownika jest pokazana cała zawartość akapitów, a w widoku strony oryginalnym jest schowane tak jak teoretycznie mi się marzy?

czy mnie zamroczyło czy coś pominąłem?
dziękuję za odpowiedź z góry i pozdrawiam gorąco

On Sam - Sierść
O7.23 SunJRE1.4 ShitXPH

squeal napisał(a):

Hmm...

No dobrze, nie wdajemy się w dyskusje, dlaczego to w ogóle działa (a jest to dziwne)...

A co do tego, dlaczego działa tylko w drugim przypadku, to mam pewne podejrzenia. Otóż, za pomocą nextSibling.nextSibling wyszukujesz drugiego z kolei brata diva, na którym kliknięto. W pierwszym przypadku drugiego brata nie ma, bo być nie może - jest tylko jeden, span z "ooo". W przypadku drugim najprawdopodobniej wskutek przerwy między tagami zostaje stworzona textNode, tak więc pierwszy nextSibling zwraca tenże textNode, a drugi span, o który ci chodzi.

Spróbuj zamiast nextSibling użyć parentNode.getElementsByTagName("span").

Ach, i dzięki za ciekawy problem do rozgryzienia. Nie wiedziałem, że takie dziwne rzeczy się dzieją, i dzisiaj pewnie będę szperał po sieci szukając, dlaczego.

siersc napisał(a):

wow, no to by się faktycznie zgadzalo - bo wstawienie jakiegokolwiek znaku lub tekstu powoduje, że skrypt (moim zdaniem tez dziwny) chodzi.
Ale co z tym wyswietlaniem w trybie właściciel/użytkownik (bezitter/gebruiker)? czy też to jakoś idzie wytłumaczyć czy to jakiś mistejk?

pzdr hot hot hot
On Sam - Sierść

O7.23(nl) Sun JRE1.4 ShitXPH(nl)

mina86 napisał(a):

Mozliwe ze w trybie uzytkownika Opera sobie po prostu olewa style.. Mozna sprobowac uzyc display:none !important czy tam display:none; !important juz nie pamietam czy powinien byc ten srednik czy nie, chyba tak wink

Ryszard napisał(a):

Mozliwe ze w trybie uzytkownika Opera sobie po prostu olewa style

Nie tyle olewa ile używa Preferencje - Wygląd strony - Mój arkusz stylów i w razie zaptaszkowania, któregoś(lub kilku) z "trybów użytkownika" dodaje do niego te zaptaszkowane.

quiris napisał(a):

Originally posted by siersc
Ale co z tym wyswietlaniem w trybie właściciel/użytkownik (bezitter/gebruiker)? czy też to jakoś idzie wytłumaczyć czy to jakiś mistejk?

Autor zadeklarował styl display:none. Style użytkownika nie uwzględniają stylów autora i dlatego span jest od razu widoczny i reszta wynika z tej prostej zależności.

siersc napisał(a):

no właśnie... style... nawet kiedyś interesowałem się nimi w @...
szkoda gadać, dzięki za otwarcie oczu; i tak jednak uważam że tego rodzaju sztuczki hide/show powinny działać mimo wszystko mimo styli ale to już inna para kaloszy p
pozdrawiam gorąco
On Sam - Sierść.