Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][JavaScript]Dodawanie numerów dla tagu
Misiur66
post
Post #1





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


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!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
ActivePlayer
post
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';
Go to the top of the page
+Quote Post
Misiur66
post
Post #3





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


Sorka ale to nie JQuery (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) $(id) to moja funkcja...
Go to the top of the page
+Quote Post
ActivePlayer
post
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.
Go to the top of the page
+Quote Post
Misiur66
post
Post #5





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
ActivePlayer
post
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
Go to the top of the page
+Quote Post
Misiur66
post
Post #7





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


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) ).
Go to the top of the page
+Quote Post
ActivePlayer
post
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 $()
Go to the top of the page
+Quote Post
Misiur66
post
Post #9





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


Kod
function $(id) {
    return document.getElementById(id);
}

Testowane już w tym samym kodzie.
Go to the top of the page
+Quote Post
ActivePlayer
post
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';
            }
        }
    }
Go to the top of the page
+Quote Post
Misiur66
post
Post #11





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


Mamy postęp - da się zwinąć, ale dalej każdy rozwijacz rozwija tylko największe id.
Go to the top of the page
+Quote Post
ActivePlayer
post
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
Go to the top of the page
+Quote Post
Misiur66
post
Post #13





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
ActivePlayer
post
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.
Go to the top of the page
+Quote Post
Misiur66
post
Post #15





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:44