JavaScript 2 Fragen bzgl. JavaScript

Cool Master

Fleet Admiral
Registriert
Dez. 2005
Beiträge
38.613
Moin,

wie der Thread name schon sagte habe ich 2 Fragen auf die ich keine Antwort gefunden habe.

Ich habe ein paar Variablen die so ausgegeben werden (in %):

66.66666666666667

86.66666666666667

Wie kann ich es einstellen das nur 2 Stellen ausgegben werden sprich 66% und 86%?

Die 2 Frage ist ein wenig komplexer evtl. klappt es sogar gar nicht.

Auch hier wieder, eine Variable mit Zahlen z.B.

5 1 2

Kann ich diese in ein Array packen so das ich sie einzel abrufen kann oder klappt das nicht?
 
In Integer wandlen oder formatiert ausgeben.
 
zu 1. schau dir die Funktion parseInt genauer an.

zu 2 ist da immer ein Leerzeichen zwischen den zahlen? Falls ja schaue dir die Funktion split an.
Falls nicht musst du eine Schleife um auf die Länge des Inhalts der Variable bauen und innerhalb der schleife immer auf das jewalige Char der Variable zugreifen so kannst du dir ein Array bauen.


Edit: zu langsam :(
 
Zuletzt bearbeitet:
Also zu 1:

Code:
Math.round(wert1 * 10000) / 10000);
document.write('<p>' + wert1 + '%' + '</p>');

kalppt leider nicht oder mach ich da was falsch?

Zu 2:

Ich schau mir mal split an :) Danke schon mal dafür :)

Edit:

document.write(parseInt(wert1)); klappt :)
 
Math.round rundet kaufmänisch auf dh. aus 66.66666666666667 wird 67, du willst aber die 66 haben deshalb müsstest du

Math.round(wert1-0.5);

machen, dann würde die Funktion 66.1666 auf 66 runden.
Musst jedoch natürlich das Ergebniss vom Math.round speichern also

var tmpWert = Math.round(wert1-0.5);
document.write('<p>' + tmpWert+ '%' + '</p>');


Da finde ich jedoch das simple parsen vom Integer schöner. (wie ich es vorgeschlagen hatte mit parseInt)
 
Jo das habe ich nun auch benutzt ist mMn auch deutlich besser, direkt in der Ausgabe einfach noch mal "parseInt()" zu schreiben statt einer neuen Zeile die erst die berechnung macht.

So wie ich es bis jetzt sehe ich split() genau das was ich gesucht habe :) Sollte ich noch mal Probleme damit haben melde ich mich noch mal :)
 
Math.floor wäre die Alternative zu parseInt, ist für nichts anderes gedacht als eine Fließkommazahl auf den nächst kleineren Int zu reduzieren und ist dabei, je nach JS-Implementierung des Browsers, deutlich schneller als parseInt. Funktionieren tut letzteres natürlich genau so.
 
Na ja auf den Speed kommt es nicht wirklich an, da es nur maximal 4 Zahlen sind :) Trotzdem danke für die Info :)

Mit dem Split hat es noch nicht 100% funktioniert, aber ich denke mal das kann ich die Tage noch lösen :)
Ergänzung ()

Ok das mit dem Split will einfach nicht klappen - leider. NUn habe ich das ganze so gemacht:

HTML:
<div id="body">
{% if jahres_letzte_eintragung %}
    <div id="content">
            <p id="jahres_stellen">
            {% for jahresuebersicht in jahres_letzte_eintragung %}
                {{jahresuebersicht.stellenbewertung}}
            {% endfor %}
            </p>
            <p id="jahres_personalplanung">
            {% for jahresuebersicht in jahres_letzte_eintragung %}
                {{jahresuebersicht.personalplanung}}
            {% endfor %}
            </p>
            <p id="jahres_rekrutierungsprozesse">
            {% for jahresuebersicht in jahres_letzte_eintragung %}
                {{jahresuebersicht.rekrutierungsprozesse}}
            {% endfor %}
            </p>
            <p id="jahres_kommunikation">
            {% for jahresuebersicht in jahres_letzte_eintragung %}
                {{jahresuebersicht.kommunikation}}
            {% endfor %}
            </p>
            <p id="jahres_fuehrungskultur">
            {% for jahresuebersicht in jahres_letzte_eintragung %}
                {{jahresuebersicht.fuehrungskultur}}
            {% endfor %}
            </p>
            <p id="jahres_beteiligungskultur">
            {% for jahresuebersicht in jahres_letzte_eintragung %}
                {{jahresuebersicht.beteiligungskultur}}
            {% endfor %}
            </p>
            <p id="jahres_nachaltigkeit">
            {% for jahresuebersicht in jahres_letzte_eintragung %}
                {{jahresuebersicht.nachaltigkeit}}
            {% endfor %}
            </p>
            <p id="jahres_arbeitsbedingung">
            {% for jahresuebersicht in jahres_letzte_eintragung %}
                {{jahresuebersicht.arbeitsbedingung}}
            {% endfor %}
            </p>
            <p id="jahres_verguetungsstruktur">
            {% for jahresuebersicht in jahres_letzte_eintragung %}
                {{jahresuebersicht.verguetungsstruktur}}
            {% endfor %}
            </p>    
    </div>
{% endif %}
</div>

Hier die Ausgabe:

HTML:
<div id="body">
    <div id="content">
            <p id="jahres_stellen">5 1 2</p>
            <p id="jahres_personalplanung">5 4 1</p>
            <p id="jahres_rekrutierungsprozesse">4 2 3</p>
            <p id="jahres_kommunikation">2 1 4</p>
            <p id="jahres_fuehrungskultur">2 2 5</p>
            <p id="jahres_beteiligungskultur">4 3 1</p>
            <p id="jahres_nachaltigkeit">3 2 5</p>
            <p id="jahres_arbeitsbedingung">2 3 1</p>
            <p id="jahres_verguetungsstruktur">1 2 5</p>    
    </div>
</div>

Es wird immer die stelle X einer id verarbeitet. Sprich die 5, 5, 4, 2, 2, 4, 3, 2, 1 gehört zu einem Datensatz.

Wie man sehen kann habe ich das nun alles in <p> Elemente mit einer id gepackt. Wie sieht das nun genau aus, kann ich die Zahlen in ein Array packen?
 
Twig hat den Join-Filter das macht dein Template eine ganze Ecke einfacher, 2/3 weniger Twig-Markup und du kannst dadurch die HTML-Paragraphen einzeilig machen - noch mehr Zeilen gespart bei einer besseren Übersichtlichkeit.

;)
 
Danke für die Anwort ice-breaker, leider bringt sie mir nichts da ich kein PHP einsetze ;) Das Template ist mit Django erstellt.
 
Falls die Frage bzgl. Runden noch aktuell ist: am einfachsten geht es mit ~~
Das schneidet einfach alle Stellen nach dem Komma ab und wandelt die Zahl in int um.
Code:
var a=55.8762; 
~~a --> gibt aus 55
Das funktioniert sowohl für Zahlen als auch für Strings!
 
Zurück
Oben