Vilken App eller hur hade du löst detta

Diskussion i 'Applikationer' startad av Mini12, 3 jun 2022.

  1. Heleg

    Heleg Professional Droid Medlem

    Blev medlem:
    5 feb 2016
    Inlägg:
    2 976
    Mottagna gillanden:
    2 099
    // betyder att resten av raden är en kommentar så efter dessa tecken kan du skriva precis vad som helst utan att det har någon som helst effekt på koden.

    Du har dessutom lagt // före ; vilket gör att du inte har något ; efter satsen som du skrivit, det är viktigt att varje sats avslutas med ett semikolon!

    Just den raden som du har visat mig här med de värden som angivits här ovan för f, g och e ger värdet 45 så där ska det inte vara någon tusentalsavgränsning.

    Jag har tagit mig lite tid och tittat igen på formateringen och så här ska den se ut för just den raden.
    Kod:
    document.getElementById('z').innerHTML = ((f*g*e).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ');
    
    Vill du ha två decimaler i svaret ska det se ut så här:
    Kod:
    document.getElementById('z').innerHTML = ((f*g*e).toFixed(2)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ').replace('.',',');
    
     
  2. Mini12

    Mini12 Kid Droid Medlem

    Blev medlem:
    19 dec 2015
    Inlägg:
    89
    Mottagna gillanden:
    10
    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER

    MINA ENHETER

    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER
    Tack igen Heleg .
    Det hjälpte mig igenom nästan hela kalkylen, utom en sträng

    "tusen tals" avgränsaren listade jag ut att det styrs via denna kod
    Kod:
    (\d{3})
    Vilket fungerar ändrar jag 3:an till en 2:a så flyttar den mellanrummet till siffra 2 etc

    Samt att styra hur många decimaler jag ville ha så ändrade jag siffran i
    Kod:
     toFixed(0))
    till hur många decimaler jag ville ha.

    men på denna string så händer ingenting när jag ändrar "toFixed" till något annat,
    utan jag har hela tiden 11 decimaler

    Kod:
    document.getElementById('M5').innerHTML = ((c+d+a*b*e)-(((f*g*e+h+i)-(f*g*e*j/100))).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ').replace('.',',');
    Ser du något som ser galet ut?
     
  3. Heleg

    Heleg Professional Droid Medlem

    Blev medlem:
    5 feb 2016
    Inlägg:
    2 976
    Mottagna gillanden:
    2 099
    Jag har ju inte hur hela koden ser ut, kan det vara så att du lagrar ett värde en gång till för M5 så att den skrivs över?
     
  4. Mini12

    Mini12 Kid Droid Medlem

    Blev medlem:
    19 dec 2015
    Inlägg:
    89
    Mottagna gillanden:
    10
    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER

    MINA ENHETER

    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER
    Jag trodde inte att så var fallet, men för att vara säker så tog jag och bytte namn till "o" i stället
    vilket gjorde susen, trodde jag.
    Så efter att ha lagt sista handen på lite estetiska detaljer, gjordes en sista kontroll.
    och insåg att "M5" som nu heter "o" fortfarande får 11 decimaler men nu det konstiga

    Problemet uppstår endast när jag ändrar körsträckan (variabel "e"), ändrar jag övriga värden så händer ingenting oönskat.
    Den fördefinierade körsträckan är "2000" ändrar jag den till "3000" uppstår problemet och jag får 11 decimaler, men minskar jag värdet till "2997" så får jag "endast" 3 decimaler.

    Testade sidan i Google och samma/liknande problem uppstod, där försvann även några av mina fördefinierade värden.

    Har jag fortfarande något litet fel i koden, trots att det enda som skiljer strängarna åt är själva uträkningen?

    Kan jag på något sätt kontrollera att koden kommer visa sidan "rätt" oberoende på webbläsare?
     
    Last edited: 18 jul 2022
  5. Heleg

    Heleg Professional Droid Medlem

    Blev medlem:
    5 feb 2016
    Inlägg:
    2 976
    Mottagna gillanden:
    2 099
    Om du lägger upp hela koden som du har nu på jsfiddle eller här (alternativt lägger ut länken till sidan med koden) så kan jag felsöka, det är säkerligen bara någon liten detalj som ska åtgärdas.
     
  6. Mini12

    Mini12 Kid Droid Medlem

    Blev medlem:
    19 dec 2015
    Inlägg:
    89
    Mottagna gillanden:
    10
    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER

    MINA ENHETER

    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER
    Du skrev att du hade lite att stå i, så ta det när du känner att du orkar och tiden finns .:)

    Kod:
        <!DOCTYPE html>
    
        <html lang="sv" xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta charset="UTF-8" />
            <title>Dags att spara pengar </title>
        </head>
        <body>
    
            <p><b>Lill Eriks El-Bils Kalkyl</b></p>
         
    
    
            <br /><br />
         
            <table>
            <table style="width:500px" >     
                <tr>
                    <th colspan="2">
                        Nuvarande fosilbil
                    </th>
                </tr>
                <tr>
                    <td>
                        <label for="a" >Skriv in Dags Aktuellt Bränslepris:</label>
    
                    </td>
                    <td>
                        <input type="number" id="a" value="25,31" oninput="calculate();">
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="b">Vad drar er bil i dag:</label>
                    </td>
                    <td>
                        <input type="number" id="b" value="0,6" oninput="calculate();"><br /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="c">Bilskatt:</label>
                    </td>
                    <td>
                        <input type="number" id="c" value="2500" oninput="calculate();"><br /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="d">Års-Kostnad för<br /> Service o Rep:</label>
                    </td>
                    <td>
                        <input type="number" id="d" value="4000" oninput="calculate();"><br /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="e">Körsträcka per år:</label>
                    </td>
                    <td>
                        <input type="number" id="e" value="2000" oninput="calculate();"><br /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="x" style= ><b>Bränsle kostnad per år ::</b></label>
                    </td>
                    <th>
                        <span id="x" /><br /><br />
                    </th>
                </tr>
                <tr>
                    <td>
                        <label for="y" style="font-size:20px;color:red"> <b>Toal kostnad per år</b> </label>
                    </td>
                    <th>
                        <b><span id="y" style="font-size:20px;color:red" /></b>
                    </th>
                </tr>
            </table>
            <br /><br /><br />
           <table>
            <table style="width:500px" >     
                <tr>
                    <th colspan="2">
                        Er nya Elbil
                    </th>
                </tr>
                <tr>
                    <td>
                        <label for="f">Skriv in elpris ink nätavgift:</label> </td>
                 
                    <td>
                        <input type="number" id="f" value="1.3" oninput="calculate();"><br /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="g">Elbilens förbrukning:</label>
                    </td>
                    <td>
                        <input type="number" id="g" value="1.4" oninput="calculate();"><br /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="h">Bilskatt:</label>
                    </td>
                    <td>
                        <input type="number" id="h" value="360" oninput="calculate();"><br /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="i">Års-Kostnad för<br /> Service o Rep:</label>
                    </td>
                    <td>
                        <input type="number" id="i" value="4500" oninput="calculate();"><br /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                        <label for="j">Mängd gratisladdning i %:</label>
                    </td>
                    <td>
                        <input type="number" id="j" value="25" oninput="calculate();"><br /><br />
                    </td>
                </tr>
                <tr>
                    <td>
                </tr>
                <tr>
                    <td>
                        <label for="z" style=><b>El kostnad per år ::</b></label>
                    </td>
                    <th>
                        <span id="z" /><br /><br />
                    </th>
                </tr>
                <tr>
                    <td>
                        <label for="q" style="font-size:20px;color:green"> <b>Toal kostnad per år</b> </label>
                    </td>
                    <th>
                        <b><span id="q" style="font-size:20px;color:green" /><br /><br /></b>
                    </th>
            </table>
            <br />
            <br />
            <br />
            <style>
                table, th, td {
                    border: 1px dotted green;
                }
            </style>
            <table style="width:500px" >     
                <tr>
                    <th colspan="2" style="font-size:26px;color:black">
             Jag Sparar per månad om jag</th>
         
                <tr>
                    <th><label for="p" >Enbart laddar hemma</label></th>
                    <th><label for="m" >Laddar hemma och % gratis</label></th>
                </tr>
                <tr>
                    <th><span id="p" style="font-size:20px;color:green" /></th>
                    <th><span id="m" style="font-size:20px;color:green" /></th>
                </tr>
            </table>
            <br /><br /><br />
            <table style="width:500px" >     
                <tr>
                    <th colspan="2" style="font-size:26px;color:black">
             Jag Sparar per År om jag</th>
         
                <tr>
                    <th><label for="P5" >Enbart laddar hemma</label></th>
                    <th><label for="o" >Laddar hemma och % gratis</label></th>
                </tr>
                <tr>
                    <th><span id="P5" style="font-size:20px;color:green" /></th>
                    <th><span id="o" style="font-size:20px;color:green" /></th>
                </tr>
            </table>
            <br /><br /><br />
            <br>
         
         
            <script type="text/javascript">
                       calculate();
                function calculate() {                                 
                    try {
                        var a = parseFloat(document.getElementById('a').value.replace(',', '.'));
                        var b = parseFloat(document.getElementById('b').value.replace(',', '.'));
                        var c = parseFloat(document.getElementById('c').value.replace(',', '.'));
                        var d = parseFloat(document.getElementById('d').value.replace(',', '.'));
                        var e = parseFloat(document.getElementById("e").value.replace(',', '.'));
                        var f = parseFloat(document.getElementById('f').value.replace(',', '.'));
                        var g = parseFloat(document.getElementById('g').value.replace(',', '.'));
                        var h = parseFloat(document.getElementById('h').value.replace(',', '.'));
                        var i = parseFloat(document.getElementById('i').value.replace(',', '.'));
                        var j = parseFloat(document.getElementById('j').value.replace(',', '.'));
    
                        document.getElementById('z').innerHTML = ((f*g*e).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ').replace('.',',');
                        document.getElementById('q').innerHTML = ((f*g*e+h+i).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ').replace('.',',');
                        document.getElementById('x').innerHTML = ((a*b*e).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ').replace('.',',');
                        document.getElementById('y').innerHTML = ((c+d+a*b*e).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ').replace('.',',');
                        document.getElementById('p').innerHTML = ((((c+d+a*b*e)-(f*g*e+h+i))/12).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ').replace('.',',');
                        document.getElementById('m').innerHTML = ((((c+d+a * b * e) - ((f * g * e + h + i) - (f * g * e * j / 100))) / 12)).toFixed(0).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ').replace('.',',');
                        document.getElementById('o').innerHTML = ((c+d+a*b*e)-(((f*g*e+h+i)-(f*g*e*j/100))).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ').replace('.',',');
                        document.getElementById('P5').innerHTML = (((c+d+a*b*e)-(f*g*e+h+i)).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",").replace(/,/g,' ').replace('.',',');
                                         }
                    catch (err) {
                        alert(err.message);
                    }
                }
            </script>
    
        </body>
        </html>
    
       
    
    
    Jag fann två saker när jag granskade det senare på kvällen:
    dels fann jag som du tidigare sa att jag kunde ta bort en parentes
    Kod:
    ((f*g*e+h+i)-(f*g*e*j/100))
    tog bort en parentes som omgärdade ovanstående uträkning

    Sen hittade jag även att "e" värdet i
    Kod:
    (document.getElementById('e').value.replace
    var omgärdad med "e" istället gör 'e'
    men det förändrade inget
     
    Last edited: 18 jul 2022
  7. Mini12

    Mini12 Kid Droid Medlem

    Blev medlem:
    19 dec 2015
    Inlägg:
    89
    Mottagna gillanden:
    10
    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER

    MINA ENHETER

    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER
    Heleg
    Jag fortsatte att försöka felsöka, och kom nu underfund med att när jag"stegade" mig igenom uträkningen med markören, så fick jag start och slut parentes "markerad" .
    Vilket gjorde att jag fann att hela uträkningen ink "toFixed"var omgärdad med det första parentes paret.
    varpå jag då prövade att flytta fram slutparentesen. vilket gjorde att alla decimaler försvann samt att "tofixed" fungerade som avsett, valde jag "toFoxed(1)" så fick jag 1 decimal osv

    Men är det kanske så att jag "måste" ha slutparentesen efter "toFixed" pga något....

    Så min fundering är nu mest om denna "flytt" var ok
    Så för att du lättare skall se så bytte jag här ut ") mot ]"
    Kod:
     Så såg den ut: ((c+d+a*b*e)-((f*g*e+h+i)-(f*g*e*j/100)).toFixed(0)]
    och efter jag flyttat den :
    ((c+d+a*b*e)-((f*g*e+h+i)-(f*g*e*j/100)))].toFixed(0) 
    Gjorde ett test med både Firefox o Google vilket fungerade bra, sen om det är bra vet jag inte :)
     
  8. Heleg

    Heleg Professional Droid Medlem

    Blev medlem:
    5 feb 2016
    Inlägg:
    2 976
    Mottagna gillanden:
    2 099
    toFixed ska ha egna parenteser, om du har parenteser utanför den så kan det påverka slutresultatet förstås beroende på vad som görs.

    Jag har inte hunnit titta på koden än som du la upp ovan, har fortfarande mycket att göra och kommer att ha det i någon/några månader framöver men om din kod fungerar och ger önskat resultat så klarar du dig säkert.
     
  9. Mini12

    Mini12 Kid Droid Medlem

    Blev medlem:
    19 dec 2015
    Inlägg:
    89
    Mottagna gillanden:
    10
    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER

    MINA ENHETER

    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER
    Ett superdupertack ”heleg” för all din hjälp genom detta projekt.

    Gick igenom uträkningarna en gång till och kunde ”rätta” bort några fler parenteser som även de omslöt ”toFixed”
    Så då sidan nu visas som önskat i både Firefox , Google och Android, så räknar jag mig nu som färdig.

    För den intresserade ligger sidan på:

    https://lill-eriks-elbils-kalkyl.webnode.se/

    bigemoji_26.png
     
    Heleg och Leo83 gillar detta.
  10. Mini12

    Mini12 Kid Droid Medlem

    Blev medlem:
    19 dec 2015
    Inlägg:
    89
    Mottagna gillanden:
    10
    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER

    MINA ENHETER

    Operatör:
    Wifog
    Telefon:
    Moto G7 POWER
    Har fortsatt mitt lilla projekt och även skapat en tabell med gott resultat, men en liten fundering jag får bägge projekten att visas enligt önskemål på både pc o mobil när jag testar med den skapade html filen, men efter att jag laddat upp den så blir visningen på mobil inte alls vad jag önskar.
    Hur kommer man runt sånt eller är det vanligt, en länk till den skapade tabellen