• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Refresh po ponownym kliknięciu

Object Storage Arubacloud
0 głosów
404 wizyt
pytanie zadane 11 maja 2017 w JavaScript przez xxkondzioxx15 Obywatel (1,440 p.)
edycja 11 maja 2017 przez xxkondzioxx15

Witam, mam takie pytanie. Można zrobić tak, aby po kliknięciu na przycisk wykonała się jedna funkcja, a po drugim kliknięciu inna?

Lub

Jak po kliknięciu w przycisk zamienić kolorami divy (w sensie że jak jeden div jest czerwony, drugi niebieski to ten pierwszy ma otrzymać kolor niebieski, a drugi czerwony, tylko to nie ma to jednorazowo zamienić tylko po każdym kliknięciu)? Udało mi się zrobić tak:


CSS:

<style type="text/css">
        #dPiec {
             width: 30px;
            height: 30px;
            background-color: #000000;
            color: white;
           
        }
        #dSzesc {
             width: 30px;
            height: 30px;
            background-color: #d9d919;
            color: white;
            
        }

JS:

<script type="text/javascript">

function Kolory(){
            document.getElementById("dPiec").style.backgroundColor = "#d9d919"; //TU I NIŻEJ NIE POBIERA Z DIV TYLKO JA SAM USTAWIŁEM!
            document.getElementById("dSzesc").style.backgroundColor = "#000000";
            }

</script>

HTML:

<input type="submit" value="btSzesc" id="btSzesc" onclick="Kolory();"/>
<div id="dPiec"></div>
<div id="dSzesc"></div>

Bardzo byłbym wdzięczny za pomoc, pozdrawiam.

2 odpowiedzi

0 głosów
odpowiedź 11 maja 2017 przez imklau Nałogowiec (42,090 p.)
wybrane 12 maja 2017 przez Kornelia Kobiela
 
Najlepsza

Ty w swoim kodzie JS podałeś tylko zmianę koloru tła, ale bez żadnego zdarzenia.

  1. Zapisz w JS elementy HTML, które chcesz kliknąć.
  2. Dopisz im zdarzenie kliknięcia + funkcję, która ma się wywołać po kliknięciu.
  3. Ustal sobie w CSS jakąś dodatkową klasę dla divów klikniętych, które będą miały inne tło
  4. A w funkcji za pomocą if'a sprawdzaj, czy kliknięty div ma ustaloną klasę. Jeśli nie ma to do dodajesz mu taką klasę, a w else ją usuwasz.

I za każdym razem kiedy klikniesz w diva będą sprawdzane te warunki, więc po każdym kliknięciu div na zmianę będzie otrzymywał klasę + nowy kolor i będzie miał tę klasę usuwaną ;)

komentarz 11 maja 2017 przez Tomek Sochacki Ekspert (227,510 p.)
  1. A w funkcji za pomocą if'a sprawdzajczy kliknięty div ma ustaloną klasę. Jeśli nie ma to do dodajesz mu taką klasę, a w else ją usuwasz.

Albo po prostu poprzez element.classList.toogle('klasa'). Więcej na:

https://developer.mozilla.org/pl/docs/Web/API/Element/classList

 

komentarz 11 maja 2017 przez imklau Nałogowiec (42,090 p.)
oo właśnie
jakoś tego nie używałam za bardzo, ale lepiej tym sposobem ;)
komentarz 11 maja 2017 przez Tomek Sochacki Ekspert (227,510 p.)
Jeśli kolega jest dopiero początkujący to tak na prawdę zrobienie tego przez if'a nie zaszkodzi, bo później łatwiej zrozumie zasadę działania toogle :) oba rozwiązania powiedziałbym więc, że są w tym wypadku oki.
0 głosów
odpowiedź 12 maja 2017 przez Radekol Bywalec (2,880 p.)
var div1 = document.getElementById("dPiec").style.backgroundColor,
      div2 = document.getElementById("dSzesc").style.backgroundColor;
function Kolory(){
if(div1=="#000000"){
            div1 = "#d9d919";
} else{
     div1 = "#000000";
}
 if(div2=="#d9d919"){
            div1 = "#000000";
} else{
     div2 = "#d9d919";
}
}
 Oprócz tego jest tu pełno drobych błędów takich jak nie odzielenie HTML od JS. Nie używaj zdarzenia onclick w HTML. Poczytaj sobie o addListenerach.
1
komentarz 12 maja 2017 przez xmentor Nałogowiec (49,520 p.)

Sprawdź co Ci zwróci to:

document.getElementById("dPiec").style.backgroundColor

zapewne pusty ciąg znaków, taki kod próbuje pobrać tę wartość ze styli inline.

if(div1=="#000000")

Warunki nigdy by się nie spełniły, gdyż kolor zwracany jest w formacie RGB.

Dodatkowo, stosujmy ===

komentarz 13 maja 2017 przez Radekol Bywalec (2,880 p.)
Dzięki za naprostowanie. Nie miałem pojęcia:)

Czyli jakbym porównał zmienną z kolorem w formacie RGB, to też by nie działało?
komentarz 13 maja 2017 przez xmentor Nałogowiec (49,520 p.)

Wartości styli, które nie są przypisane inline pobieramy przez getComputedStyle

Podobne pytania

0 głosów
0 odpowiedzi 166 wizyt
0 głosów
0 odpowiedzi 134 wizyt
pytanie zadane 10 marca 2018 w JavaScript przez Kiele Obywatel (1,530 p.)
0 głosów
1 odpowiedź 298 wizyt
pytanie zadane 28 marca 2018 w JavaScript przez Kolberg Obywatel (1,560 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...