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

Pobieranie danych z i użycie zmiennej w funkcji,

Object Storage Arubacloud
0 głosów
390 wizyt
pytanie zadane 29 kwietnia 2016 w JavaScript przez MatiiTv Gaduła (3,790 p.)

Witam, próbuję napisać skrypt, który będzie pobierał ze strony liczbę kredytów, po to żeby użyć jej do konstrukcji ifa. 

                        var poll = 141060;
                        var lottery = document.getElementById('inputlottery');
                        $.ajax({
                            url: 'coins.php',
                            cache: false,
                            success: function(html){
                                    var coins = html;
                                    document.getElementById('a').innerHTML = coins;
                            }
                        });
                        function processbet(){
                            if(lottery.value == 0 || lottery.value ==null){
                                bootbox.alert("You can't bet nothing in a lottery!");
                            }else if (lottery.value>poll) {
                                bootbox.alert("You can't bet higher than poll!");
                            }else if (lottery.value>coins) {
                                bootbox.alert("You can't bet higher than your balance!");
                            }
                    }

Użyłem 

document.getElementById('a').innerHTML = coins;

Żeby sprawdzić czy $.ajax działa, i działa. Tylko że nie potrafię odczytać tej zmiennej z funkcji processbet. 

else if (lottery.value>coins) {
                                bootbox.alert("You can't bet higher than your balance!");
                            }

Nie działa.

Bardzo proszę o pomoc, pozdrawiam.

1 odpowiedź

+1 głos
odpowiedź 29 kwietnia 2016 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 30 kwietnia 2016 przez MatiiTv
 
Najlepsza

Czy konsola pokazuje jakieś błędy?

Upewnij się, że lottery.value jest liczbą, a nie stringiem.

W którym miejscu wywołujesz funkcję processbet()? Wewnątrz jej zmienna coins nie jest widoczna, gdyż została utworzona w AJAX (jest tam utworzona lokalnie). Czyli, z tego co widać w pokazanym kodzie, to w tym else if (lottery.value>coins) porównujesz string z undefined (albo nawet jest tam błąd typu "coins is not defined", bo ta zmienna nie jest nawet zadeklarowana ani w tej funkcji, ani w scope wyżej) - tak bym obstawiał, bo nie wydaje mi się, aby wewnątrz processbet() była widoczna zmienna coins.

Moja propozycja:

Wewnątrz metody success (na jej końcu) umieść wywołanie funkcji z przekazaniem parametru processbet(coins);, zaś do samej deklaracji funkcji dodaj ten parametr function processbet(coins){/*...*/} - możesz zamiast coins napisać coś innego, ale wtedy to samo musisz zawrzeć w tamtym else if (lottery.value>coins)

komentarz 30 kwietnia 2016 przez MatiiTv Gaduła (3,790 p.)
Ok :) else if (!(Number(lottery.value))){
                                    bootbox.alert("Invalid bet amount!");
                                } działa :)
komentarz 30 kwietnia 2016 przez MatiiTv Gaduła (3,790 p.)
Ostatnie pytanie: jak zrobić, żeby zabezpieczyć się przed tym, że użytkownik poda float? żeby skrypt wymagał żeby liczba była całkowita?
komentarz 30 kwietnia 2016 przez ScriptyChris Mędrzec (190,190 p.)
if (liczba === parseInt(liczba, 10))
    console.log('Liczba calkowita');

Pod 'liczba' podstawiasz swoja zmienna (zarówno przed ===, jak i w nawiasie parseInt).

 

komentarz 1 maja 2016 przez MatiiTv Gaduła (3,790 p.)
Nie działa.
komentarz 1 maja 2016 przez MatiiTv Gaduła (3,790 p.)
else if (!(lottery.value % 1 === 0)||lottery.value<0){
                                    bootbox.alert("Invalid bet amount!");
                                }

:)

 

Pozdrawiam.

Podobne pytania

0 głosów
1 odpowiedź 950 wizyt
pytanie zadane 30 października 2016 w JavaScript przez niezalogowany
0 głosów
1 odpowiedź 832 wizyt
pytanie zadane 21 marca 2017 w JavaScript przez Zbigniew Andrysiak Bywalec (2,470 p.)
0 głosów
1 odpowiedź 531 wizyt
pytanie zadane 18 stycznia 2021 w JavaScript przez Xele Początkujący (310 p.)

92,626 zapytań

141,486 odpowiedzi

319,847 komentarzy

62,009 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!

...