![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
Witam! Mam pewien problem - otóż bawię się z formularzami pod AJAX-a, ale problemy już mnie dopadły w Javascripcie. Tutaj przedstawie kod i go objaśnię:
Kod //Komentarz var newsy = getElementsByClassName('news'); var liczba = 0; for(var i=0; i<newsy.length; i++){ liczba++; var kontener_id = 'komentarz_kontener_'+liczba; var rozwijacz_id = 'komentarz_rozwijacz_'+liczba; var hr_id = 'komentarz_hr_'+liczba; var kontener = $(kontener_id); var rozwijacz = $(rozwijacz_id); var hr = $(hr_id); var widok = kontener.style.display; rozwijacz.onclick = function(){ if(widok == 'none'){ kontener.style.display = 'block'; hr.style.display = 'block'; } else if(widok == 'block'){ kontener.style.display = 'none'; hr.style.display = 'none'; } } } i HTML Kod <hr class='komentarz_belka_ogrodzenie' /> <div class='komentarz_belka'><span class='komentarz_przedluzacz'><b>KOMENTARZE</b></span><span class='komentarz_rozwijacz_span'><b class='komentarz_rozwijacz' id='komentarz_rozwijacz_2'>+</b></span></div> <hr class='komentarz_belka_ogrodzenie' /> <div class='komentarz_kontener' id='komentarz_kontener_2' style='display: none;'> <br /> <form class='formularz_komentarz' action='php/komentarze.php' method='$_GET'> <div class='rownaj_label'> <label for='komentarz_nick'><b class='komentarz_label_tekst'>Nick:</b></label><br /> <label for='komentarz_tresc'><b class='komentarz_label_tekst'>Treść:</b></label> </div> <div class='rownaj_input'> <input type='text' name='komentarz_nick' /><br /> <textarea name='komentarz_tresc'></textarea> </div> </form> </div> <hr class='komentarz_hr' id='komentarz_hr_2' style='display: none;' /> Tutaj był przykładowy kod HTML akurat z id 2. Otóż próbuję dostosować ilość numerków zgodnie z ilością divów o class news (tutaj nie pokazałem go), za pomocą getElementsByClassName (kod jest wcześniej). Po wstawieniu alerta zwraca kolejność 1,2,3,4 i to się zgadza. Ale po kliknięciu w 'komentarz_rozwijacz_x' rozwija się tylko 1 element i nie da się go zwinąć. Proszę o pomoc! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
Kod var kontener_id = '#komentarz_kontener_'+liczba; var rozwijacz_id = '#komentarz_rozwijacz_'+liczba; var hr_id = '#komentarz_hr_'+liczba; pamietaj ze pobierasz by id czyli # w jquery. co do reszty, lepiej uzyc jquerowego .css() niz id.style.costam = 'costam'; |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
Sorka ale to nie JQuery (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) $(id) to moja funkcja...
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
zobacz czy ona zwraca Ci konkretne obiekty. i jeszcze, nie pisz elseif, tylko samo else, bo są 2 wyjscia, widoczne, albo niewidoczne.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
Funkcja działa na 100%, bo używam jej w całym kodzie. Else nie dało nic (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) I przy wciśnięciu dowolnego 'rozwijacza' rozwija się ten o najwyższym id, ale się nie zwija. A i nazwy zmiennych są trochę mylące. W tych coś_id to tylko tekst do prawdziwego getElementById.
|
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
1. zamien elseif na samo else
2. Kod rozwijacz.onclick zamien na Kod $('komentarz_rozwijacz_'+liczba) 3. zainteresuj sie np jquery bo sie zajedziesz. Ten post edytował ActivePlayer 22.05.2008, 18:34:07 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
1 i 2 zrobione, ale niestety...
3. Może pomyśle (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ale jak narazie pozostanę przy 'czystym' JS (chociaż jeśli da się w jQuery robić płynne rozwijanie to się zainteresuję (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) ). |
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
da sie. robisz np.
$("#id_elementu").show('slow'); i jest ladnie. mase opcji daje jQuery. pokaz jak wyglada fkcja $() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
Kod function $(id) { return document.getElementById(id); } Testowane już w tym samym kodzie. |
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
Kod //Komentarz
var newsy = getElementsByClassName('news'); var liczba = 0; for(var i=0; i<newsy.length; i++){ liczba++; $('komentarz_rozwijacz_'+liczba).onclick = function(){ if($('komentarz_kontener_'+liczba).style.display == 'none'){ $('komentarz_kontener_'+liczba).style.display = 'block'; $('komentarz_hr_'+liczba).style.display = 'block'; } else{ $('komentarz_kontener_'+liczba).style.display = 'none'; $('komentarz_hr_'+liczba).style.display = 'none'; } } } |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
Mamy postęp - da się zwinąć, ale dalej każdy rozwijacz rozwija tylko największe id.
|
|
|
![]()
Post
#12
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
Kod function zwin_rozwin(liczba){ if($('komentarz_kontener_'+liczba).style.display == 'none'){ $('komentarz_kontener_'+liczba).style.display = 'block'; $('komentarz_hr_'+liczba).style.display = 'block'; } else{ $('komentarz_kontener_'+liczba).style.display = 'none'; $('komentarz_hr_'+liczba).style.display = 'none'; } } i w htmlu, oczywiscie cyferki sobie dynamicznie wygeneruj Kod <b class='komentarz_rozwijacz' id='komentarz_rozwijacz_2' onclick="zwin_rozwin(2);">+</b>
Ten post edytował ActivePlayer 22.05.2008, 18:50:52 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
Spróbuję, chociaż BARDZO nie lubię wstawiania JS w HTML.
No cóż wyrzuca błąd 'zwin_rozwin is not defined' Ten post edytował Misiur66 22.05.2008, 18:55:24 |
|
|
![]()
Post
#14
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
hard refresz w przegladarce, sprawdz literówki itp itd. musisz gdzies miec blad po drodze.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 11 Dołączył: 2.03.2008 Skąd: Lublin Ostrzeżenie: (10%) ![]() ![]() |
Skrypt ~Lorda T jest świetny (już dostał pomógł, ~ActivePlayer również). Ale jeszcze jedna rzecz pozostała - rozwijają się ok, ale już gorzej ze zwijaniem... Popróbuję, ale to taka moja ostatnia prośba (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Sorka brak kodu:
Kod //Komentarz function pokaz_komentarz(id){ var view = $('komentarz_kontener_'+id).style.display; var rozwijacz = $('komentarz_rozwijacz_'+id); rozwijacz.onclick = function(){ if (view != 'block') { $('komentarz_kontener_' + id).style.display = 'block'; $('komentarz_hr_' + id).style.display = 'block'; } else if (view != 'none'){ $('komentarz_kontener_' + id).style.display = 'none'; $('komentarz_hr_' + id).style.display = 'none'; } } } Kod var newsy = getElementsByClassName('news'); var komentarz_rozwijacz = new Array(newsy.length); for(var i = 0; i<newsy.length; i++){ id=i+1; komentarz_rozwijacz[id] = pokaz_komentarz('' + id + ''); } Edit: Hihi zadziałało po dodaniu w pokaz_komentarz: Kod //Komentarz
function pokaz_komentarz(id){ var view = $('komentarz_kontener_'+id).style.display; var rozwijacz = $('komentarz_rozwijacz_'+id); rozwijacz.onclick = function(){ if (view != 'block') { $('komentarz_kontener_' + id).style.display = 'block'; $('komentarz_hr_' + id).style.display = 'block'; return pokaz_komentarz(id); } else if (view != 'none'){ $('komentarz_kontener_' + id).style.display = 'none'; $('komentarz_hr_' + id).style.display = 'none'; return pokaz_komentarz(id); } } } Ten post edytował Misiur66 23.05.2008, 12:30:08 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:44 |