Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]ReferenceError: winner is not defined
PawelC
post 30.11.2018, 13:49:56
Post #1





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Witam,
Próbuje zrobić coś takiego, że mam 3 przyciski na których umieszczony jest kurs zakładu. Po kliknięciu w odpowiednim miejscu chciałem, aby pokazał się input form ze stawką do wpisania i to działa. Problem leży w tym, że mam funkcję saveBet która powinna POST-em wysłać kto wygra, jaka stawka oraz jaki kurs. Niestety jak kliknę przycisk dodaj to w konsoli wywala mi błąd:
Cytat
ReferenceError: winner is not defined

I nie mam pomysłu jak to obejść sad.gif

Poniżej obecny kod:
  1.  
  2. <meta charset="utf-8">
  3. <script src="https://code.jquery.com/jquery-3.3.1.min.js"
  4. integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  5. crossorigin="anonymous"></script>
  6. function saveBet(kto, kurs) {
  7. var winner = kto;
  8. var bet = kurs;
  9. var stawka = $('#stawka').val();
  10. console.log("Obstawiłeś na " + winner + ", twój kurs wynosi " + bet + ". Twoja stawka wynosi " + stawka + " możesz wygrać" + (stawka * bet) + "<br/>");
  11. }
  12.  
  13. function addBet(kto, kurs) {
  14. var winner = kto;
  15. var bet = kurs;
  16. $('.zaklady').append("Obstawiłeś na " + winner + ", twój kurs wynosi " + bet + "<br><input type='text' id='stawka' value='50'/><br/>");
  17. $('.zaklady').append("<a href='' onclick='saveBet(winner, bet)'>Dodaj</a>");
  18. }
  19.  
  20.  
  21. </script>
  22. </head>
  23.  
  24. <span style="width: 100px;height:10px;padding: 5px; background-color:red;color:#FFF;" onclick="addBet('home','2.13');">Tester</span>
  25. <span style="width: 100px;height:10px;padding: 5px; background-color:red;color:#FFF;" onclick="addBet('cross','1.38');">Remis</span>
  26. <span style="width: 100px;height:10px;padding: 5px; background-color:red;color:#FFF;" onclick="addBet('away','3.38');">Tester 2</span>
  27. <p>Twoje zakłady: <br/>
  28. <p class="zaklady"></p>
  29. </body>
  30.  
  31. </html>
Go to the top of the page
+Quote Post
trueblue
post 30.11.2018, 14:04:58
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Zmienne winner i bet mają zasięg lokalny, tj. są dostępne tylko w funkcji. Kiedy jest wywoływana funkcja saveBet ze zmiennymi jako parametrami, to szukane są w zasięgu globalnym. Albo więc powinieneś je zadeklarować najwyżej, albo podstawiać do funkcji saveBet ich wartości, a nie same zmienne.


--------------------
Go to the top of the page
+Quote Post
PawelC
post 30.11.2018, 14:43:52
Post #3





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Zrobiłem tak jak napisałeś, ale teraz zamiast wartości to zmienna ma null ;/
Go to the top of the page
+Quote Post
nospor
post 30.11.2018, 14:51:36
Post #4





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Powiedzmy,ze nie wierzymy ci na slowo... Pokaz lepiej jak zrobiles to "dokladnie jak ci pisano" wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
PawelC
post 30.11.2018, 22:19:10
Post #5





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Już w większości sobie poradziłem:
[JAVASCRIPT] pobierz, plaintext
  1. <html>
  2.  
  3. <head>
  4. <meta charset="utf-8">
  5. <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
  6. <script>
  7. var winner;
  8. var bet;
  9.  
  10. function addBet(kto, kurs) {
  11.  
  12. winner = kto;
  13. bet = kurs;
  14. $('.zaklady').append("Obstawiłeś na " + winner + ", twój kurs wynosi " + bet + "<br><select id='stawka'><option value='5'>5</option><option value='10'>10</option><option value='25'>25</option><option value='50'>50</option></select><br/>");
  15. $('.zaklady').append("<span id='add' onclick='saveBet(winner, bet)'>Dodaj</span>");
  16. }
  17.  
  18. function saveBet(kto, kurs) {
  19. winner = kto;
  20. bet = kurs;
  21. var stawka = $('#stawka').val();
  22. if (stawka !== null) {
  23. console.log("Obstawiłeś na " + winner + ", twój kurs wynosi " + bet + ". Twoja stawka wynosi " + stawka + " możesz wygrać " + (stawka * bet));
  24. stawka = null;
  25. $('#stawka').hide();
  26. $('#add').hide();
  27. } else {
  28. alert("Podaj stawkę!");
  29. }
  30. }
  31. </script>
  32. </head>
  33.  
  34. <body>
  35. <span style="width: 100px;height:10px;padding: 5px; background-color:red;color:#FFF;" onclick="addBet('home','2.13');">Tester</span>
  36. <span style="width: 100px;height:10px;padding: 5px; background-color:red;color:#FFF;" onclick="addBet('cross','1.38');">Remis</span>
  37. <span style="width: 100px;height:10px;padding: 5px; background-color:red;color:#FFF;" onclick="addBet('away','3.38');">Tester 2</span>
  38. <p>Twoje zakłady: <br />
  39. <p class="zaklady"></p>
  40. </body>
  41.  
  42. </html>
[JAVASCRIPT] pobierz, plaintext

ale mam jeszcze pewien problem jak wybiorę raz kurs + stawkę i dodam, to jak wybieram drugi kurs oraz stawkę to jest ona taka sama jak poprzednia ;/

Ten post edytował PawelC 30.11.2018, 22:20:45
Go to the top of the page
+Quote Post
trueblue
post 30.11.2018, 22:32:59
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Zastosuj drugie rozwiązanie - budując element wstaw do funkcji saveBet od razu wartości.


--------------------
Go to the top of the page
+Quote Post
PawelC
post 30.11.2018, 22:49:00
Post #7





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Masz na myśli w tej liniii?
[JAVASCRIPT] pobierz, plaintext
  1. $('.zaklady').append("<span id='add' onclick='saveBet(winner, bet)'>Dodaj</span>");
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 18:40