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

Porównanie stringów.

VPS Starter Arubacloud
0 głosów
1,993 wizyt
pytanie zadane 16 lutego 2016 w JavaScript przez Vojti_v Nowicjusz (120 p.)
Hej,

Stawiając swoje pierwsze kroki w JS postanowiłem zrobić grę kółko i krzyżyk. Nie mogę dojść do ładu ze stringiem.

Mianowicie, wywołuję funkcję co się zwie: kliknij(id)   - gdzie id w argumencie funkcji oznacza id div'a, który został kliknięty.  Jej wywołanie przykładowo brzmi: <div id="A" onclick="kliknij(A)"> . W samej funkcji zastosowałem if'a, który brzmi: if(id=='A') . Próbowałem też if(id=="A"). I tu jest problem, którego nie mogę rozwiązać. Nie wiem dlaczego ten warunek jest zawsze fałszywy i program pomija to co jest w tym if'ie. Czy ktoś wie gdzie leży problem?

4 odpowiedzi

+1 głos
odpowiedź 16 lutego 2016 przez niezalogowany

Piszesz niepoprawny kod JS do niepoprawnego HTMLa, który jest niepoprawnie stylizowany. - Wiadro zimnej wody

Jak najbardziej doceniam to, że chcesz uczyć się nowych rzeczy, jednak naukę podziel na jakieś sensowne etapy, Od rzeczy prostych, do bardziej skomplikowanych. Opanuj podstawy CSSa, poczytaj jeszcze o HTML5, a dopiero później zabierz się za warstwę logiki. No i chyba najważniejsze tutaj - znajdź aktualny poradnik do JavaScriptu, bynajmniej nie 15-letni :)

Przed Tobą jeszcze długa droga - warto stawiać pierwsze kroki w dobrym kierunku.

No i liczę na to, że kiedyś zobaczę tutaj kółko i krzyżyk Twojego autorstwa ; )

0 głosów
odpowiedź 16 lutego 2016 przez PucLee Nowicjusz (200 p.)
Lepiej byłoby, gdybyś pokazał kod, wtedy można by coś więcej na jego temat powiedzieć. :)
komentarz 16 lutego 2016 przez Vojti_v Nowicjusz (120 p.)
0 głosów
odpowiedź 16 lutego 2016 przez Magicone Nałogowiec (45,100 p.)
> onclick="kliknij(A)"

Tym sposobem jako argument przekazałeś niezdefiniowaną zmienną A. Najprościej → wstaw to A między apostrofy, czyli kliknij('A') - przekażesz wówczas argument id jako string o zawartości A.
komentarz 16 lutego 2016 przez ScriptyChris Mędrzec (190,190 p.)

Albo onclick="kliknij(this.id)"

komentarz 16 lutego 2016 przez Magicone Nałogowiec (45,100 p.)
Right! A najlepiej to w ogóle pozbyć się parametru onclick, a operację wykonywać z poziomu czystego js… :v
0 głosów
odpowiedź 16 lutego 2016 przez ScriptyChris Mędrzec (190,190 p.)
edycja 16 lutego 2016 przez ScriptyChris
Poniższy zapis jest zły z dwóch powodów:

document.getElementById("A").setAttribute("onclick",";");

1. Nie wpychaj do HTML zdarzeń, które mają być wykonane przez JS - w Twoim przypadku onclick wywołujący funkcje.

2. Metoda setAttribute() jest u Ciebie źle zapisana, konkretnie to jej drugi argument. No bo co tam robi średnik?

https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute

Jesli już chcesz wstawiać w ten sposób onclick, to zapisz to w ten sposób:

document.getElementById('A').setAttribute('onclick', 'kliknij(this.id)');

Pominę, że lepiej to zrobić od strony JS - o czym nie tylko ja Ci tu powiem (zerknij tutaj: https://kornel.ski/onclick). Istotne jest, że jako drugi argument podajesz nazwę funkcji, która ma się wykonać, a w jej nawiasach zamiast podawać 'A' (czy inne ID) - podaj this.id.

Natomiast prawidłowo powinieneś to zapisać w ten sposób:

HTML:

 
    <div id="A"> <img src="znak_zapytania1.jpg" alt="opis_zdjecia" />  </div>

Po pierwsze, jak wspomniałem, usuwasz atrybut DIVa onclick.

Po drugie dopisz do img atrybut alt - w nim zamieść opis zdjęcia, który pokaże się np. gdy zdjęcie się nie wczyta.

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img

JavaScript:

document.addEventListener('click', function(ev)
{
	console.log('ID kliknietego elementu: ', ev.target.parentNode.id);
}, false);

Zamiast w elemencie HTML umieszczać atrybut onclick, w JS do obiektu document (w nim zawiera się praktycznie cała zawartość pliku HTML strony) dodaj EventListener, który ustawiasz w "tryb" nasłuchiwania kliknięć. Gdy wystąpi klik na którymś z elementów na stronie, to wtedy możesz sobie poprzez właściwość zdarzenia (ev.target) sprawdzić, co je wywołało. W powyższym przykładzie w konsoli wypisane zostanie ID diva, w którym znajduje się dany obrazek - bo klikasz w obrazki, a one są zagnieżdżone w DIVach, dlatego musisz odwołać się do rodzica obrazka.

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

Podobne pytania

0 głosów
1 odpowiedź 677 wizyt
0 głosów
1 odpowiedź 5,922 wizyt
pytanie zadane 26 czerwca 2015 w JavaScript przez Mieszko I Stary wyjadacz (10,980 p.)
+1 głos
5 odpowiedzi 438 wizyt
pytanie zadane 26 kwietnia 2023 w C i C++ przez polandonion Mądrala (6,970 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...