Zmiana klasy css z parametrem

0

Witam,

Zacząłem używać javascript w połączeniu z css i podstawy nie działają tak jak sobie to wyobrażam. Czy ktoś mógłby mi podpowiedzieć czemu poniższy kod błędnie działa?

W skrócie: w css mam div: #k1 oraz div: #b_change
i dwie klasy: k1over i k1change

algorytm powinien działać następująco:

po kliknięciu na warstwę #k1 przypisuję jej klasę k1over oraz zmienna c1 przyjmuje wartość 1 lub 0 (w zależności czy kliknięcie jest parzyste czy nie).
po kliknięciu na warstwę #b_change div #k1 przełącza się na klasę k1change pod warunkiem, że parametr c1=1
kod działa poprawnie z wyjątkiem tego, że bez względu na parametr c1 zachodzi akcja: $('#k1').toggleClass('k1change');

Zakłam, że błąd leży w gdzieś w "if".

Z góry bardzo dziękuję za pomoc.

Pozdrawiam
Michał

<script> 
var c1=0 

$( "#k1" ).mousedown(function() {$('#k1').toggleClass('k1over');c1=c1+1;c1=c1%2;});

$( "#b_change" ).mousedown( function() { 

if (c1=1) { 
 $('#k1').toggleClass('k1change'); 
}; 
}); 

</script>
2

O wiele lepiej się pracuje, gdy osoba pytająca podrzuci jakiś działający przykład.
Jak możesz to wrzuć swój kod na http://jsfiddle.net i podeślij nam tutaj link do swojej wrzutki.

0

Proszę, tutaj pełna wersja
https://jsfiddle.net/xukz7nqc/1/

-podpowiedź, po kliknięciu na czerwona kartę i kliknięciu "change", karta powinna zniknąć a parametr c1=1
-bez klikania na czerwoną kartę i po kliknięciu "change", nic się nie powinno zadziać, a parametr c1 powinien =0

Pozdrawiam
Michał

2

Wydaje mi się, że wiem, w czym jest błąd. I chyba dobrze kombinowałeś - błąd był w if.

Ostatnia funkcja powinna mieć postać:

$("#b_change").mousedown(function() {
  window.alert(c1);
  if (c1 == 1) {
    $('#k1').toggleClass('k1change');
  };
});

Czy wiesz, na czym polegał błąd, czy mam wyjaśnić? ;) Tutaj masz link do działającej wersji - https://jsfiddle.net/e602kz5u/.

I jeszcze takie trzy uwagi, wprawdzie niezwiązane wprost z Twoim pytaniem, ale mogą się przydać:

1) border: 0px solid black; - nie ma sensu pisać pozostałych parametrów. Jeśli chcesz się pozbyć ramki, to po prostu napisz, że ma być 0, a to jakiego ma być (czy raczej - nie ma być) koloru czy stylu nie mają znaczenia, bo i tak ma rozmiar 0 ;)

2) postaraj się dbać o formatowanie kodu, bo trochę miałeś to niechlujnie napisane

3) zamiast stosować konstrukcje w stylu c5 = c5 + 1; c5 = c5 % 2; chyba lepiej będzie skorzystać z typu logicznego/boolean - https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/Boolean albo https://www.w3schools.com/js/js_booleans.asp. I potem w kodzie, podczas kliknięcia sobie zamieniasz stan zmiennej w stylu bool = !bool;.

1

:D Nie trzeba :D Dziękuję !

Pozdrawiam
Michał

1 użytkowników online, w tym zalogowanych: 0, gości: 1