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

Zamiana stringa na number w js

Object Storage Arubacloud
0 głosów
274 wizyt
pytanie zadane 10 lutego 2023 w JavaScript przez Piotrek2713 Mądrala (5,380 p.)
function writeNums()
    {
       let numberOne = document.getElementById('input-1').value;
       let numberTwo = document.getElementById('input-2').value;
       parseInt(numberOne, numberTwo);
       const resultEl = document.getElementById('result');
       let result = "";

       if ((typeof numberOne === Number) && (typeof numberTwo === Number))
       {
        if ((numberOne>numberTwo) || (numberOne==numberTwo))
        {
            result = "Pierwsza liczba powinna być mniejsza od drugiej";
        }
        else if (numberOne<numberTwo)
        {
            for (i=numberOne; i<=numberTwo; i++)
            {
                result = result + i + " ";
            }
        }
       }
       else if ((typeof numberOne !== Number) || typeof numberTwo !== Number)
       {
        result = "Wpisz wartości liczbowe";
       }

       resultEl.innerHTML = result;
    }

    document.getElementById('button').onclick = writeNums;

Próbuję przekonwertować wartość z inputów na liczby. Warunek ma sprawdzić czy te wartości są typu number, czy nie udało się zmienić i są NaN. Problem jednak w tym, że po wpisaniu liczb do obu pól, pierwszy warunek ma wartość false (Nie spełnia się).

2 odpowiedzi

0 głosów
odpowiedź 10 lutego 2023 przez adrian17 Ekspert (344,860 p.)

OK, mega dziwnie przekombinowałeś.

parseInt(numberOne, numberTwo);

Ta funkcja nie bierze zmiennej i "zamienia ją na liczbę". Ta funkcja bierze stringa i zwraca Ci liczbę. Tą liczbę musisz przypisać do zmiennej.

Natomiast sprawdzanie typeof ogólnie tutaj nie ma miejsca.

komentarz 10 lutego 2023 przez Piotrek2713 Mądrala (5,380 p.)
Spróbuję ten skrypt napisać inaczej. Tak w ogóle, czemu "Sprawdzanie typeof  tutaj nie ma miejsca"? Nie zadziała tutaj?
komentarz 10 lutego 2023 przez adrian17 Ekspert (344,860 p.)
parseInt zawsze zwraca jakąś liczbę, więc sprawdzanie typu wyniku i tak zawsze da Ci Number.
1
komentarz 10 lutego 2023 przez Wiciorny Ekspert (270,170 p.)
Nie zawsze,  może być też NaN  i warto mieć to  na uwadze
2
komentarz 10 lutego 2023 przez adrian17 Ekspert (344,860 p.)
Ale mówiłem tutaj o typeof - NaN to też jest "jakaś liczba" z punktu widzenia typowania. `typeof NaN === 'number'``
komentarz 11 lutego 2023 przez Piotrek2713 Mądrala (5,380 p.)
function writeNums()
    {
       let numberOne = document.getElementById('input-1').value*1;
       let numberTwo = document.getElementById('input-2').value*1;
       const resultEl = document.getElementById('result');
       let result = "";

       resultEl.innerHTML=typeof(numberOne)+" "+typeof(numberTwo);

    }

    document.getElementById('button').onclick = writeNums;

Faktycznie tak jest. Tylko co zrobić jeśli chcę aby litery były jako string a cyfry tylko i wyłącznie jako number?

 

komentarz 13 lutego 2023 przez VBService Ekspert (253,340 p.)

Spróbuj

[ on-line ]

function writeNums()
{
  let numberOne = document.getElementById('input-1').value;
  let numberTwo = document.getElementById('input-2').value;
  const resultEl = document.getElementById('result');

  if (! isNaN(numberOne)) numberOne *= 1;
  if (! isNaN(numberTwo)) numberTwo *= 1;

  resultEl.innerHTML=typeof(numberOne)+" "+typeof(numberTwo);
}

document.getElementById('button').onclick = writeNums;

 

–1 głos
odpowiedź 10 lutego 2023 przez VBService Ekspert (253,340 p.)
edycja 10 lutego 2023 przez VBService

Sprawdź to:

[ on-line ]

test = parseInt(document.querySelector('input').value);

test = parseFloat(document.querySelector('input').value);

test = document.querySelector('input').value * 1;

test = Number(document.querySelector('input').value);

test = +document.querySelector('input').value;

test = document.querySelector('input').value - 0;

test = document.querySelector("input").valueAsNumber;

 

po wpisaniu liczb do obu pól, pierwszy warunek ma wartość false (Nie spełnia się)

[ on-line ]

let test = document.querySelector('input').value * 1;

// if ((typeof numberOne === Number) && (typeof numberTwo === Number))
result.textContent = (typeof test === Number) + '\n';
result.textContent += typeof(typeof test === Number) + '\n';

// if ((typeof(numberOne) === 'number') && (typeof(numberTwo) === 'number'))
result.textContent += (typeof(test) === 'number') + '\n';

 

Podobne pytania

+1 głos
1 odpowiedź 135 wizyt
0 głosów
1 odpowiedź 249 wizyt
pytanie zadane 25 listopada 2016 w JavaScript przez Shiro Stary wyjadacz (10,300 p.)
0 głosów
1 odpowiedź 322 wizyt

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 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!

...