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

Problem z przesłaniem zmiennej przez parametr this

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
598 wizyt
pytanie zadane 27 maja 2016 w JavaScript przez niezalogowany

Witam, ciężko będzie mi wytłumaczyć napotkany problem, ale mam nadzieję, że ktoś mnie zrozumie.

W jednym plik1.php mam taki kod:

$data = $pokaz_mies.'/'.$i.'/'.$pokaz_rok; // zmienne $pokaz_mies i $pokaz_rok są definiowane wcześniej i działają poprawnie

// nieistotny kod

echo "<input class='otwieranie' type='submit' name='$data' id='$data' value='!' onclick='pokaz_szczegoly(this);'> "; // wiem, że nie powinno się używać onclick(), ale edytuję pewien skrypt i metody mają być niezmienione (nawet jeśli są one przestarzałe)


Potem w pliku2.php próbuję jakoś odebrać tą zmienną $data i ją wyświetlić przez alert() - w celu sprawdzenia czy działa:

<script>
			function pokaz_szczegoly(data){
				var szczegoly = data;
				alert(szczegoly); // nie wyświetla mi tego co powinno	
	        }
</script>			

 

Jak mam poprawnie przesłać zmienną $data - przez parametr this?

 

komentarz 27 maja 2016 przez ScriptyChris Mędrzec (190,190 p.)

alert(szczegoly); // nie wyświetla mi tego co powinno

A co pokazuje? 

komentarz 27 maja 2016 przez niezalogowany
[object HTMLInputElement]
komentarz 27 maja 2016 przez Magicone Nałogowiec (45,100 p.)
No przecież this wskazuje na dany element... :]
komentarz 27 maja 2016 przez ScriptyChris Mędrzec (190,190 p.)

To może prześlij zmienną $data zamiast this bezpośrednio do funkcji?

http://stackoverflow.com/a/23740549/4983840

komentarz 27 maja 2016 przez niezalogowany
edycja 27 maja 2016

Mam coś takiego:

$data = $pokaz_mies.'/'.$i.'/'.$pokaz_rok; 
// nieistotny kod

echo "<input class='otwieranie' type='submit' name='$data' id='$data' value='!' onclick='pokaz_szczegoly($data);'> "; 

drugi plik: 
<script>
			function pokaz_szczegoly($data){
				var szczegoly = $data;
				alert(szczegoly);
	        }
</script>	

I drukuje mi jakiś długi ciąg liczb. Chyba będę musiał skorzystać bezpośrednio z Ajax, a miałem nadzieję, że jakoś uda mi się przesłać wartość tej zmiennej przez onclick(zmienna)

1 odpowiedź

0 głosów
odpowiedź 28 maja 2016 przez niezalogowany

Problem rozwiązałem sam. Podzielę się odpowiedzią, bo może komuś się przyda:

1. plik:

$data = $pokaz_mies.'/'.$i.'/'.$pokaz_rok;
echo "<input class='otwieranie' type='submit' name='$data' id='$data' value='wydarzenia' onclick='pokaz_szczegoly(this);'> ";

2. plik:

function pokaz_szczegoly(data){
var pobrana_data = data.id;
}

 

komentarz 28 maja 2016 przez Comandeer Guru (606,240 p.)

A nie lepiej wykorzystać [data-*]?

$data = $pokaz_mies.'/'.$i.'/'.$pokaz_rok;
echo "<input class='otwieranie' type='submit' name='$data' data-details='$data' value='wydarzenia' onclick='pokaz_szczegoly(this);'> ";
function pokaz_szczegoly(data){
    var pobrana_data = data.dataset.details;
}

 

komentarz 28 maja 2016 przez niezalogowany
A co to zmienia? :P

Zresztą średnio to rozumiem. Co to za parametr data-details? Nigdy się z nim nie spotkałem, a potem się jeszcze odwołujesz do niego przez dataset. Poszukałem chwilę, ale nic takiego w żadnej dokumentacji nie znalazłem. Podesłałbyś linka?
komentarz 28 maja 2016 przez Comandeer Guru (606,240 p.)

A co to zmienia? :P

Jest czyściej ;) Ani [name], ani [id] do takich rzeczy nie powinny służyć.

A [data-details] nie znalazłeś, bo wszystkie atrybuty zaczynające się od data- to atrybuty, które można samemu tworzyć. 

komentarz 28 maja 2016 przez niezalogowany

Ok, dzięki. Czadersko byłoby jeśli potem zamiast w javescript byłoby można zamiast:

document.getElementById 

używać:

document.getElementBydataset.*

ale pewnie taka magia nie istnieje. :D

komentarz 28 maja 2016 przez Comandeer Guru (606,240 p.)

Oczywiście, że istnieje!

document.querySelector( '[data-details]' )

 

komentarz 28 maja 2016 przez niezalogowany

Dziękuję

Napiszesz mi jeszcze proszę czy jest jakaś różnica jeśli dopiszemy jeszcze wartość? Czyli:

document.querySelector( '[data-details="$data"]' )

Bo znalazłem przykład: http://stackoverflow.com/questions/14809528/why-does-js-code-var-a-document-queryselectoradata-a-1-cause-error

komentarz 28 maja 2016 przez Comandeer Guru (606,240 p.)
Rzeknę tak: tam można wsadzić wszystko, co jest poprawnym selektorem CSS. To odpowiada na obydwa Twoje pytania ;)

Podobne pytania

0 głosów
1 odpowiedź 131 wizyt
pytanie zadane 1 marca 2019 w C i C++ przez Curiosis Użytkownik (540 p.)
0 głosów
1 odpowiedź 546 wizyt
pytanie zadane 2 stycznia 2021 w JavaScript przez Oskar Szkurłat Bywalec (2,780 p.)
0 głosów
0 odpowiedzi 228 wizyt
pytanie zadane 13 marca 2016 w JavaScript przez Wirus Stary wyjadacz (14,000 p.)

93,186 zapytań

142,200 odpowiedzi

322,010 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1835p. - Adrian Wieprzkowicz
  9. 1785p. - Michal Drewniak
  10. 1744p. - rafalszastok
  11. 1734p. - Anonim 3619784
  12. 1684p. - Mikbac
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1474p. - Dawid128
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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...