JavaScript - dynamiczna zmiana akcji OnClick

HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
ODPOWIEDZ
Cvaniak
Nowy
Nowy
Posty: 22
Rejestracja: ndz lip 24, 2005 12:36 pm

JavaScript - dynamiczna zmiana akcji OnClick

Post autor: Cvaniak »

Witam, mam problem z dynamiczną zmianą akcji OnClick. Chodzi o to, że mam przycisk i kiedy kliknie się na niego to wywoływana jest funkcja wlacz(), chcę zrobić tak, że po ponownym kliknięciu w ten sam przycisk nie zostanie wywołana funkcja wlacz() ale wylacz(). Napisałem prosty kod, ale niestety nie działa :(

Kod: Zaznacz cały

function wlacz() {
    alert('Wlaczono!');
    document.getElementById('przycisk').onclick = wylacz();
}

function wylacz() {
    alert('Wylaczono!');
    document.getElementById('przycisk').onclick = wlacz();
}
atom
Nowy
Nowy
Posty: 145
Rejestracja: wt gru 20, 2005 1:55 pm
Kontakt:

Re: JavaScript - dynamiczna zmiana akcji OnClick

Post autor: atom »

Możesz spróbować w ten sposób:

- w akcji onclick wywołać funkcję toggle();
- zdefiniować w js globalną zmienną state, i zdefiniować funkcję toggle np. tak:

Kod: Zaznacz cały

var state = true;

function toggle()
{
    if (state == true) {
        wlacz();
    }
    else {
        wylacz();
    }
    state = !state;
}
W swoich funkcjach wlacz() i wylacz() usuwasz podstawienie onclick. Powyższego nie testowałem - to tylko idea ;)
koziolek
Przelotem
Przelotem
Posty: 387
Rejestracja: sob paź 21, 2006 10:07 pm
Kontakt:

Re: JavaScript - dynamiczna zmiana akcji OnClick

Post autor: koziolek »

w twoim kodzie jest dość wredny i częsty błąd.
zamiast:

Kod: Zaznacz cały

document.getElementById('przycisk').onclick = nazwa(); 
użyj

Kod: Zaznacz cały

document.getElementById('przycisk').onclick = nazwa; 
o co chodzi? w pierwszym przypadku do akcji onclick przypisałeś WYNIK działania funkcji nazwa() czyli zapewne null. W drugim przypadku przyporządkowujesz nie wynik a FUNKCJĘ :) w sumie referencję do funkcji, ale to mało istotne w JS ;)

offtop
BEGIN
to mój 333 post... połowa mnie już jest zadowolona :twisted:
END
ODPOWIEDZ