Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]ReferenceError: winner is not defined
Forum PHP.pl > Forum > Przedszkole
PawelC
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>
trueblue
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.
PawelC
Zrobiłem tak jak napisałeś, ale teraz zamiast wartości to zmienna ma null ;/
nospor
Powiedzmy,ze nie wierzymy ci na slowo... Pokaz lepiej jak zrobiles to "dokladnie jak ci pisano" wink.gif
PawelC
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 ;/
trueblue
Zastosuj drugie rozwiązanie - budując element wstaw do funkcji saveBet od razu wartości.
PawelC
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.