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

Przeniesienie wartości przez funkcję

HackNation - ogólnopolski hackathon
0 głosów
465 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ź 1,172 wizyt
0 głosów
2 odpowiedzi 1,158 wizyt
pytanie zadane 23 stycznia 2019 w C i C++ przez thekibi27 Bywalec (2,110 p.)
0 głosów
1 odpowiedź 303 wizyt

93,628 zapytań

142,551 odpowiedzi

323,050 komentarzy

63,133 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1694p. - dia-Chann
  2. 1676p. - DziarnowskiJ
  3. 1650p. - Łukasz Piwowar
  4. 1640p. - CC PL
  5. 1616p. - Maurycy W
  6. 1607p. - raydeal
  7. 1602p. - Adrian Wieprzkowicz
  8. 1588p. - Tomasz Bielak
  9. 1521p. - Michal Drewniak
  10. 1491p. - Rafał Trójniak
  11. 1471p. - rafalszastok
  12. 1444p. - robwarsz
  13. 1257p. - ssynowiec
  14. 1208p. - Mariusz Fornal
  15. 1116p. - rucin93
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...