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

Przeniesienie wartości przez funkcję

Object Storage Arubacloud
0 głosów
233 wizyt
pytanie zadane 26 marca 2017 w JavaScript przez Mimoid Użytkownik (760 p.)

Hej. Tak wygląda mój kod HTML:

  <img src="obrazek_dom.png"  id="o1"   alt="keyo1"  onclick="pressed();"/>
  <img src="obrazek_dach.png" id="o2"  alt="keyo2" onclick="pressed();"/>
  <img src="obrazek_okno.png" id="o3"  alt="keyo3" onclick="pressed();"/>

Potrzebuję jakiegoś sposobu, aby przenieść wartość liczbową do funkcji. Na przykład po wciśnięciu na obrazek_dom.png do funkcji idzie liczba 1, po wciśnięciu obrazek_dach.png do funkcji idzie liczba 2 itd.

Wpisanie w nawiasy, pressed(), danej liczby nie działa. Stworzenie zmiennej przed utworzeniem obrazków i wstawienie go jako argument funkcji również nie działa. Jakieś pomysły? 

 

1 odpowiedź

+2 głosów
odpowiedź 26 marca 2017 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 26 marca 2017 przez Mimoid
 
Najlepsza
<img src="obrazek_dom.png"  id="o1"   alt="keyo1"  onclick="pressed();"/>

Chcesz przekazać do funkcji pressed() liczbę, najlepiej taką która oznacza numer obrazka? Dlaczego 

Wpisanie w nawiasy, pressed(), danej liczby nie działa

nie działa? Pokaż kod JavaScript. Może zapominasz o argumencie w deklaracji funkcji?


Możesz to zrobić na parę sposobów, zaczynając od onclick wybrałeś jeden z gorszych :) 

Spróbuj w ten sposób:

<img src="obrazek_dach.png" id="o2"  alt="keyo2">
document.querySelector( 'img' ).addEventListener( 'click', function() {
     var pictureNumber = this.id.slice( 1 );
     alert( 'Obrazek numer: ' + pictureNumber );
} );

Z racji tego, że masz kilka obrazków, żeby nie doczepiać do każdego z nich EventListenera, zastosuj EventDelegation - owiń wszystkie obrazki np. elementem <div>, na niego ustaw EventListener i wtedy pozyskuj sobie numer obrazka za pomocą event.target.id.

komentarz 26 marca 2017 przez Mimoid Użytkownik (760 p.)
Wielkie dzięki. Właśnie skróciłeś mój kod z 1500 linijek do 100 xD
komentarz 26 marca 2017 przez ScriptyChris Mędrzec (190,190 p.)
Masz 1500 obrazków na stronie? :)
2
komentarz 26 marca 2017 przez kap Stary wyjadacz (11,620 p.)
A co to za jakieś kombinacje z id stosujesz? Skoro nie korzystasz z id do identyfikacji elementu to możesz go w ogóle nie uzywać i zamiast tego uzyć pola, które z założenia służy do przechowywania danych: `data-` (np `data-id`) - nie musisz wtedy kombinować z jakimiś prefiksami by zapewnić unikalność.
komentarz 26 marca 2017 przez ScriptyChris Mędrzec (190,190 p.)

Racja, można tutaj skorzystać z atrybutu data-*. Jednak autor korzystał z id, więc nie chciałem mieszać.

komentarz 26 marca 2017 przez Mimoid Użytkownik (760 p.)

@Krzychu92 Nie mam 1500 obrazków na stronie. To tylko urywek kodu, który z rozwiązaniem od ciebie, zmienił całą resztę skryptu(ctrl+c, ctrl+v) na uniwersalny kod w jednym miejscu. wink

@kap Dzięki.Korzystałem z id bo nie znałem nic innego.

Podobne pytania

0 głosów
1 odpowiedź 917 wizyt
0 głosów
2 odpowiedzi 563 wizyt
pytanie zadane 23 stycznia 2019 w C i C++ przez thekibi27 Bywalec (2,110 p.)
0 głosów
1 odpowiedź 179 wizyt

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 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!

...