Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JS ukrywanie elementu zagłębionego w stronie
Forum PHP.pl > Forum > XML, AJAX
gulgul
Witam,
chciałbym by jeden element o id="el1" stał się niewidzialny po naciśnięciu jakiegoś przycisku. Sprawa niby banalna, bo wystarczy ODPOWIEDNIO użyć : document.getElementById(id).style.display = 'none';, gdzie id to mój el1.

Problem u mnie tkwi w tym, że ten element o id="el1" jest zagłębiony w stronie, powiedzmy tak:

<div onClick="document.getElementById('el1').style.display = 'none';" />

<ul>
<li class="aa1">
<ul id="bb1">
<li></li>
<li><div id="cc1">
<ul>
<li id="el1">.......

...

to mi nie chce działać

Proszę o pomoc i z góry dzięki
kamil4u
Rozumiem, że ta lista <ul> i <li> jest w tym <div>-ie? Opisz co znaczy nie chce działać - tzn. co się dzieje.

Strzelam, że chodzi o bąbelkowanie(zdarzenia w JS) --> szukaj pod: cancelBubble

I opisz dokładniej co chcesz zrobić - jak ma to działać smile.gif
gulgul
tak jest w divie

chcę zrobić zwykłe odkrywanie elementu po naciśnięciu pierwszego div;a

a co się dzieje po naciśnieciu - nic:D

głupi studencki błąd - mała literówka - już działa, ale pojawił się kolejny problem.

w css ukryłem wszystkie ul z interesującej mnie warstwy:
display:none;

w JS korzystam ze skryptu:

function toggle(id) {
var el = document.getElementById(id);

if(el.style.display == 'none') {
show(id);
} else {
hide(id);
}
}

function show(id) {
document.getElementById(id).style.display = 'block';
}

function hide(id) {
document.getElementById(id).style.display = 'none';
}


problem polega na tym, że za pierwszym razem muszę przycisnąć 2 razy na przycisk by "odkryć" ukryty element. Potem działa normalnie - co z tym zrobić
Spawnm
Proszę używać bbcode.
kamil4u
Masz 4 wyjścia (może więcej, ale nie chce mi się myśleć):
1) użyć funkcji toggle - po załadowaniu strony/DOM-u
2) przypisać ręcznie do elementu styl --> <element style="display: none;">
3) przypisać przez skrypt styl do elementu(prawie to samo co 1)
4) przerobić ten skrypt, żeby czytał styl z zew. plików css

Osobiście polecam 1 lub 3 smile.gif - 4 za wolna smile.gif, a 2... nie przypisuje się styli przez atrybut style smile.gif
Fifi209
ew. Zamiast używać takich "własnych" funkcji znacznie lepiej użyć gotowych rozwiązań typu jQuery i tam masz funkcję toggle, która moim zdaniem działa dobrze. (nigdy nie miałem takich problemów jak Ty)
kamil4u
Do takich "problemów" nie opłaca się korzystać z bibliotek - gdy kod w czystym JS zajmie nie więcej niż 10 linijek...
Kildyt
Zgadzam się z kamil4u. Poza tym chyba powinniśmy poszerzać swoją widzę, a "masowe" korzystanie z gotowych bibliotek to nietykanie problemu.
Fifi209
Cytat(Kildyt @ 10.07.2009, 21:37:17 ) *
Zgadzam się z kamil4u. Poza tym chyba powinniśmy poszerzać swoją widzę, a "masowe" korzystanie z gotowych bibliotek to nietykanie problemu.


Poszerzać można ją na różne sposoby, zwykle u programisty mile widziane jest doświadczenie w pracy z framework'ami.

A w przyszłości i tak sięgnie się po gotowe rozwiązanie.
Kildyt
Cytat(fifi209 @ 10.07.2009, 22:49:44 ) *
Poszerzać można ją na różne sposoby, zwykle u programisty mile widziane jest doświadczenie w pracy z framework'ami.

A w przyszłości i tak sięgnie się po gotowe rozwiązanie.

No tak ale po co komuś znajomość obsługi frameworka gdy go nie rozumie? Poza tym forum powinno edukować i zmuszać do myślenia, a nie szukania łatwiejszych dróg. Łatwiej bardzo rzadko znaczy lepiej. Frameworki oczywiście są potrzebne, ale po to aby nie trzeba było tłuc kodu od początku i tracić czasu. Jednym słowem sądzę, że frameworków nie powinna używać osoba, która nie ma zielonego pojęcia o danej dziedzinie. Fw nie powinien być CMS-em. Takie przynajmniej moje zdanie. smile.gif
Fifi209
Cytat(Kildyt @ 10.07.2009, 21:56:37 ) *
No tak ale po co komuś znajomość obsługi frameworka gdy go nie rozumie? Poza tym forum powinno edukować i zmuszać do myślenia, a nie szukania łatwiejszych dróg. Łatwiej bardzo rzadko znaczy lepiej. Frameworki oczywiście są potrzebne, ale po to aby nie trzeba było tłuc kodu od początku i tracić czasu. Jednym słowem sądzę, że frameworków nie powinna używać osoba, która nie ma zielonego pojęcia o danej dziedzinie. Fw nie powinien być CMS-em. Takie przynajmniej moje zdanie. smile.gif


Jak się nauczy jego obsługi to i będzie wiedział (mniej więcej) jak działa.

Tak forum powinno zmuszać do myślenia i działania jednak uważam, że można to realizować na wiele sposobów, pisanie własnego kodu albo nauka obsługi framework'a.

P.S. Napisałem o tym jQuery tylko dla tego, że w nim nie napotkałem na takie problemy a też kiedyś byłem przeciwnikiem używania tego typu rozwiązań.
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.