
Dzięki funkcji parseInt()
języka JavaScript w łatwy sposób można dokonać konwersji łańcucha tekstowego na
liczbę całkowitą. Niestety korzystanie z niej w celu pobrania wartości wpisanej
przez użytkownika niesie za sobą pewne zagrożenie.
Przeanalizuj poniższy fragment kodu:
function dodaj()
{
var txt = document.getElementById('TextBox1');
var a = parseInt(txt.value);
return a +
10;
}
Co stanie się gdy użytkownik wprowadzi do okienka
10? Oczywiście funkcja
zwróci wartość 20. Co jednak wydarzy się gdy ktoś wpisze do okienka ciąg
010?
Otóż w rezultacie otrzymamy 18! Stało się tak dlatego, że funkcja parseInt() wywoływana
tylko z jednym parametrem zinterpretowała tekst wpisany przez usera aplikacji jako
wartość podaną w systemie ósemkowym (napis postaci
0x10 został by odczytany
jako szesnastkowy). Możesz być niemal pewien, iż użytkownik programu zakładał, że
wprowadzenie zera przed liczbę nie powinno mieć wpływu na wynik. A jednak ma! Co
zrobić by program działał bardziej intuicyjnie? Wystarczy dodać w wywołaniu funkcji
parseInt() drugi parametr określający podstawę wykorzystywanego systemu liczbowego.
Należy więc zastosować taki kod:
function dodaj2()
{
var txt = document.getElementById('TextBox1');
var a = parseInt(txt.value,
10);
return a +
10;
}
------