Suchen
Inside Forum
Nützliche Links




 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > andere (Programmier-)Sprachen > JavaScript

JavaScript Alles rund um JavaScript, Ajax und die diversen JS-Frameworks.

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 13.05.2018, 09:36
DanteTwoKing DanteTwoKing ist offline
Besucher
 
Registriert seit: 11.04.2018
Beiträge: 57
Standard Ergebis ohne runden begrenzen

Hallo zusammen,

ich habe von Javasript leider absolut keinen Plan, brauche es aber um auf meiner Seite einen ganz simplen umrechner zu implementieren.
Ich habe da auch schon etwas gefunden was meinen Anforderungen genüge tut. Jedoch möchte ich das Ergebnis auf 2 Kommastellen begrenzen ohne zu runden.

Ich hoffe ihr habt da einen schnellen fix für mich.

Code:
<p>
        <label>Lauflänge in Zoll</label>
        <input id="inputInches" type="number" placeholder="Zoll" oninput="LengthConverter(this.value)" onchange="LengthConverter(this.value)">
      </p>
      <p>Lauflänge in mm: <span id="outputmm"></span></p>

<script>
function LengthConverter(valNum) {
  document.getElementById("outputmm").innerHTML=valNum/0.039370;
}
</script>
Mit Zitat antworten
  #2  
Alt 13.05.2018, 14:12
protestix protestix ist offline
Engagierter Besucher
 
Registriert seit: 29.06.2016
Beiträge: 667
Standard AW: Ergebis ohne runden begrenzen

Wenn man von etwas keinen Plan hat, es aber ständig braucht, was macht man da?

-

Javascript ist gar nicht so schwer, wenn man sich folgendes vor Augen hält.
So ziemlich alles ist ein Objekt.
Zu so ziemlich jedem Objekt gibt es verschiedene Methoden.
Da nun nicht jeder alle Methoden auswendig kennt, nimmt man sich eine Seite wo man nachsehen kann. Ich empfehle die Seite mdn, das sie viele Artikel auf deutsch schon bereit hält..

Javascriipt in HTML als Attribut zu schreiben(hier onInput, etc.) kann man umgehen in dem man Ids verwendet und eventlistener. Damit bist du oftmals fein raus. Trennst Javascript von HTML und vermeidest Fehler.
Zum Testen nimmst du die Console. Im Browser über F12 zugänglich.
Ein Beispiel hast du hier.

Sauberes HTML ist dabei Voraussetzung um das DOM anzusprechen. Daher immer den Code, der ausgegeben wird, auf Fehler testen.
Der FF macht im Quelltext alles rot was nicht richtig geparst werden kann, ansonsten den Validator vom w3c anwenden.

Code-Beispiel
HTML Quellcode:
<!DOCTYPE html>
<html lang="de">

<head>
<meta charset="UTF-8">
<title>Input International Number: precision 2</title>
<style>
    var { font-style: normal; }
</style>
</head>

<body>
    <form id="inch2mm">
        <label>Lauflänge in Zoll</label>
        <input id="inputInches" type="number" placeholder="Zoll" min="1" max="20" step="0.01">
        <p>Lauflänge in mm: <var id="outputMm"></var></p>
    </form>

<script>
    document.addEventListener('input', function (e) {
        var val = document.getElementById("inputInches").value;
        document.getElementById("outputMm").textContent = inch_to_mm(val);
    }, false);
    
    function inch_to_mm(x) {
      var n = Number.parseFloat(x/0.039370).toLocaleString(undefined,
      {
        minimumFractionDigits: 2,
        maximumFractionDigits: 2
      })
      return n;
    }

</script>

</body>
</html>


Wichtiges kurz erklärt:
<html lang="de"> - Lokalisierung vorgeben. Komma statt Punkt für DE bei Zahlen. Zutreffend auf Input Elemente.

ids für alle Elemente die wir mit Javascript ansprechen.

Input type Number erhält Vorgabewerte für Min, Max und Schrittweite

br Elemente entfernt, Abstände bitte in CSS mit Margin top und botttom
umsetzen.
Je kompakter unser HTML desto schneller wird geparst und CSS kann vom Browser gespeichert werden, wenn man es in einer Datei auslagert, was hier als Beispiel natürlich nicht stattfindet. Gleiches gilt für Javascript.

innerHTML durch textContent ersetzt. Bei innerHTML wird die Seite neu erstellt, das ist aber bei normalen Stringersetzungen gar nicht notwendig, da keine Elemente ersetzt, gelöscht oder hinzugefügt wurden auch CSS wird nicht angefasst.

eventlistestener auf Änderung der Eingabe

Funktion inchToMm(x) rechnet den Wert in Millimeter um und gibt diesen auf 2 Stellen nach dem Komma gekürzt im richtigen Format aus, hier also als Kommazahl wegen: lang=´"de",
Siehe https://developer.mozilla.org/de/doc...toLocaleString

Bitte nicht immer div und span verwenden, es gibt so viele Element die man ansprechend einsetzen kann.

Geändert von protestix (13.05.2018 um 14:20 Uhr)
Mit Zitat antworten
  #3  
Alt 13.05.2018, 15:51
DanteTwoKing DanteTwoKing ist offline
Besucher
 
Registriert seit: 11.04.2018
Beiträge: 57
Standard AW: Ergebis ohne runden begrenzen

Zitat:
Wenn man von etwas keinen Plan hat, es aber ständig braucht, was macht man da?

-
Und wo hast du das her?

Es ist das erste und bis jetzt einzige mal das ich Javasript brauche.

Und wegen 5 Zeilen Code eine neu Sprache zu lernen finde ich doch etwas übertrieben.

Dennoch danke für das Script.

Geändert von DanteTwoKing (13.05.2018 um 15:55 Uhr)
Mit Zitat antworten
  #4  
Alt 13.05.2018, 16:25
Kasalop Kasalop ist offline
Forum-Mitarbeiter
 
Registriert seit: 29.12.2006
Ort: München
Beiträge: 5.856
Standard AW: Ergebis ohne runden begrenzen

OFFTOPIC:
Tipp:
Wieso denn bitte durch 0,039370 teilen? Was für ein Quark.
1 Zoll = 25,4 mm und 1 cm = 10 mm.

Auf die 0,039370 kommt man wenn man 1 / 25,4 mm teilt. Dieser Bruch ist aber offensichtlich nicht endlich (hat unendlich viele Nachkommastellen) und (nicht ganz offensichtlich, aber leicht errechenbar) eine Periode von 42 Stellen.

Damit lässt sich doch bekloppt arbeiten. Du kürzt selbst schon auf x Nachkommastellen und machst deine Berechnung künstlich ungenau.

Einfacher: X / (1 / 25,4) ist das gleiche wie X * 25,4. Zumal Multiplizieren auch noch einfacher als Dividieren ist und damit einfacher für den Prozessor.
__________________
Es gibt 10 Arten von Menschen auf der Welt. Die die die binäre Mathematik verstehen und die die sie nicht verstehen!

Zu welcher der Gruppen gehörst du?
Mit Zitat antworten
  #5  
Alt 13.05.2018, 17:17
DanteTwoKing DanteTwoKing ist offline
Besucher
 
Registriert seit: 11.04.2018
Beiträge: 57
Standard AW: Ergebis ohne runden begrenzen

Wenn ich x * 25,4 nehme spuckt er mir bei 3 Zoll, 75mm aus. Richtig wäre aber 76,20 mm. Was enorm wichtig ist für die weitere Verarbeitung.
Mit Zitat antworten
  #6  
Alt 13.05.2018, 18:04
Kasalop Kasalop ist offline
Forum-Mitarbeiter
 
Registriert seit: 29.12.2006
Ort: München
Beiträge: 5.856
Standard AW: Ergebis ohne runden begrenzen

dann machst du was falsch. Zeig uns deinen Code (am besten als fiddle)

Lg Kasalop
__________________
Es gibt 10 Arten von Menschen auf der Welt. Die die die binäre Mathematik verstehen und die die sie nicht verstehen!

Zu welcher der Gruppen gehörst du?
Mit Zitat antworten
  #7  
Alt 13.05.2018, 19:23
DanteTwoKing DanteTwoKing ist offline
Besucher
 
Registriert seit: 11.04.2018
Beiträge: 57
Standard AW: Ergebis ohne runden begrenzen

Oje, wie füge ich das denn hier ein?

Im Grunde habe ich das Script von protestix genommen und unten bei (x/0.039370) das ganze gegen (x*25,4) ausgetauscht, mehr nicht.
Mit Zitat antworten
  #8  
Alt 13.05.2018, 19:55
protestix protestix ist offline
Engagierter Besucher
 
Registriert seit: 29.06.2016
Beiträge: 667
Standard AW: Ergebis ohne runden begrenzen

https://jsfiddle.net/5kust4ta/
Mit Zitat antworten
  #9  
Alt 13.05.2018, 20:15
DanteTwoKing DanteTwoKing ist offline
Besucher
 
Registriert seit: 11.04.2018
Beiträge: 57
Standard AW: Ergebis ohne runden begrenzen

Ok, Fehler gefunden. Punkt und Komma.

Danke euch.
Mit Zitat antworten
  #10  
Alt 13.05.2018, 20:56
Kasalop Kasalop ist offline
Forum-Mitarbeiter
 
Registriert seit: 29.12.2006
Ort: München
Beiträge: 5.856
Standard AW: Ergebis ohne runden begrenzen

Zitat:
Zitat von protestix Beitrag anzeigen
Rundet bei mir und schneidet nicht ab, wie vom TE gewünscht.

@TE Du kannst auch folgendes machen:
Code (Javascript):
var num = 123.456;
var fixed = Number.parseInt(num*100)/100;

Ist halt nicht mit eingebauten Methoden, sondern eher der "logische" Ansatz. Nicht hübsch, geht aber auch.

Lg Kasalop
__________________
Es gibt 10 Arten von Menschen auf der Welt. Die die die binäre Mathematik verstehen und die die sie nicht verstehen!

Zu welcher der Gruppen gehörst du?
Mit Zitat antworten


Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Runden mit 0 santa_vs_claus PHP 1 10.01.2015 00:34
runden dreamworker01 PHP 2 04.06.2008 16:00
Runden ?? Surfer862 PHP 2 14.07.2005 15:39
number_format() ohne zu runden? emkay PHP 2 09.12.2003 22:17
Runden Troubleman Datenbanken 1 01.01.1970 01:00


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:33 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC