Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Bzozoo
    tag

    Sziasztok!

    Nem, nem kérdezek semmit :)) csak egy kis érdekesség, ami nem tudom, hogy fejlesztői hiba-e, vagy régóta fennálló probléma, minden esetre érdekes, de megkerülhető.
    Történt ugyanis, hogy egy adott beviteli mezőnek használni akartam az értékét JS-ből.
    <input type="number" id="szam" value="13">
    Az ehhez tartozó lekérdezés a legsztenderdebb valaha:
    let szam = document.getElementById("szam").value;
    Namost sokat csináltam régebben is ilyet, de mint kiderült, egyetlen dolgot nem akartam vele: Összeadási műveletet végrehajtani.

    Ugyanis nem éppen együttműködő ;]
    Kivonni, szorozni, osztani, gyököt vonni, stb simán lehet probléma nélkül. De amint hozzáadnál valamit: szam = szam + 600; // result: 13600. Szóval string lesz belőle, noha egy számbeviteli változóról van szó... Miután ezt felfedeztem, elkezdtem kísérletezni vele. Számértékké konvertálásra azonnal hibát dobott a console. String-é alakítani és utána vissza num-ra lehet és utána minden működik, még az összeadás is... Csak lássuk be, nem a legszebb megoldás :(
    Így maradt a jó öreg mottó: Ha valamit nem tudsz megoldani, kerüld meg! Így lett végül a megoldás szam = (szam / 1) + 600 // result: 613. Szebb is, működik is, de egyébként felesleges lenne, ha néha nem kattanna meg a böngészők motorja ;]

    Chrome alatt tesztelve

    Valami nagyon félre ment akkor, mert létezik nagyon sok jó módszer a stringek number-ré alakítására. Valamelyik csak egész számokkal használható, valamelyik pedig a decimálisokat tartalmazókkal is működik.

  • coco2
    őstag

    Sziasztok!

    Nem, nem kérdezek semmit :)) csak egy kis érdekesség, ami nem tudom, hogy fejlesztői hiba-e, vagy régóta fennálló probléma, minden esetre érdekes, de megkerülhető.
    Történt ugyanis, hogy egy adott beviteli mezőnek használni akartam az értékét JS-ből.
    <input type="number" id="szam" value="13">
    Az ehhez tartozó lekérdezés a legsztenderdebb valaha:
    let szam = document.getElementById("szam").value;
    Namost sokat csináltam régebben is ilyet, de mint kiderült, egyetlen dolgot nem akartam vele: Összeadási műveletet végrehajtani.

    Ugyanis nem éppen együttműködő ;]
    Kivonni, szorozni, osztani, gyököt vonni, stb simán lehet probléma nélkül. De amint hozzáadnál valamit: szam = szam + 600; // result: 13600. Szóval string lesz belőle, noha egy számbeviteli változóról van szó... Miután ezt felfedeztem, elkezdtem kísérletezni vele. Számértékké konvertálásra azonnal hibát dobott a console. String-é alakítani és utána vissza num-ra lehet és utána minden működik, még az összeadás is... Csak lássuk be, nem a legszebb megoldás :(
    Így maradt a jó öreg mottó: Ha valamit nem tudsz megoldani, kerüld meg! Így lett végül a megoldás szam = (szam / 1) + 600 // result: 613. Szebb is, működik is, de egyébként felesleges lenne, ha néha nem kattanna meg a böngészők motorja ;]

    Chrome alatt tesztelve

    parseInt() - legrosszabb esetben ez az atombiztos, ami után nyugodtan alhatsz

  • nevemfel
    senior tag

    Sziasztok!

    Nem, nem kérdezek semmit :)) csak egy kis érdekesség, ami nem tudom, hogy fejlesztői hiba-e, vagy régóta fennálló probléma, minden esetre érdekes, de megkerülhető.
    Történt ugyanis, hogy egy adott beviteli mezőnek használni akartam az értékét JS-ből.
    <input type="number" id="szam" value="13">
    Az ehhez tartozó lekérdezés a legsztenderdebb valaha:
    let szam = document.getElementById("szam").value;
    Namost sokat csináltam régebben is ilyet, de mint kiderült, egyetlen dolgot nem akartam vele: Összeadási műveletet végrehajtani.

    Ugyanis nem éppen együttműködő ;]
    Kivonni, szorozni, osztani, gyököt vonni, stb simán lehet probléma nélkül. De amint hozzáadnál valamit: szam = szam + 600; // result: 13600. Szóval string lesz belőle, noha egy számbeviteli változóról van szó... Miután ezt felfedeztem, elkezdtem kísérletezni vele. Számértékké konvertálásra azonnal hibát dobott a console. String-é alakítani és utána vissza num-ra lehet és utána minden működik, még az összeadás is... Csak lássuk be, nem a legszebb megoldás :(
    Így maradt a jó öreg mottó: Ha valamit nem tudsz megoldani, kerüld meg! Így lett végül a megoldás szam = (szam / 1) + 600 // result: 613. Szebb is, működik is, de egyébként felesleges lenne, ha néha nem kattanna meg a böngészők motorja ;]

    Chrome alatt tesztelve

    Nem tudom, hogyan akartad számmá konvertálni a stringet, de ez jól működik:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="shortcut icon" href="#">
        <title>Document</title>
    </head>
    <body>
        <input type="number" id="szam" value="13">
        <script>
            let szam = document.getElementById("szam").value;
            szam = Number(szam);
            szam += 600;
            console.log(szam);
        </script>
    </body>
    </html>

  • dqdb
    nagyúr

    Sziasztok!

    Nem, nem kérdezek semmit :)) csak egy kis érdekesség, ami nem tudom, hogy fejlesztői hiba-e, vagy régóta fennálló probléma, minden esetre érdekes, de megkerülhető.
    Történt ugyanis, hogy egy adott beviteli mezőnek használni akartam az értékét JS-ből.
    <input type="number" id="szam" value="13">
    Az ehhez tartozó lekérdezés a legsztenderdebb valaha:
    let szam = document.getElementById("szam").value;
    Namost sokat csináltam régebben is ilyet, de mint kiderült, egyetlen dolgot nem akartam vele: Összeadási műveletet végrehajtani.

    Ugyanis nem éppen együttműködő ;]
    Kivonni, szorozni, osztani, gyököt vonni, stb simán lehet probléma nélkül. De amint hozzáadnál valamit: szam = szam + 600; // result: 13600. Szóval string lesz belőle, noha egy számbeviteli változóról van szó... Miután ezt felfedeztem, elkezdtem kísérletezni vele. Számértékké konvertálásra azonnal hibát dobott a console. String-é alakítani és utána vissza num-ra lehet és utána minden működik, még az összeadás is... Csak lássuk be, nem a legszebb megoldás :(
    Így maradt a jó öreg mottó: Ha valamit nem tudsz megoldani, kerüld meg! Így lett végül a megoldás szam = (szam / 1) + 600 // result: 613. Szebb is, működik is, de egyébként felesleges lenne, ha néha nem kattanna meg a böngészők motorja ;]

    Chrome alatt tesztelve

    behavior by design

    Az input.value property string típusú attól függetlenül, hogy milyen típust állítasz be az elemnek. JavaScriptben string + szám = string, azért kapod azt, amit, míg a többi esetben a stringet számmá konvertálja.

Új hozzászólás Aktív témák

Hirdetés