Ich habe eine Anzeige, die ich arbeite, die Benutzereingaben von einer anderen Seite anzeigt, aber da diese Eingaben große Zahlen sein können, muss ich JS anwenden, um sie zu $ 1K statt $ 1000 zu formatieren , $ 1M statt $ 1.000.000 und so weiter. Ich habe ein paar Skripts ausprobiert, die in der Konsole funktionieren, aber keine Verbindung mit dem HTML herstellen, das einen Wert hat (den ich nur zum Testen des JS eingegeben habe). Ich muss sicherstellen, dass dies funktioniert, was auch immer innerhalb des Bereichs-Tags ist, da auf der tatsächlichen Anzeige ein dynamischer Wert vorhanden ist, der die Eingaben des Benutzers einbezieht. Ich bin mir ziemlich sicher, dass das Problem darin besteht, wie ich den Wert innerhalb der ersten Spanne mit der Klasse #old id/.current anrufe, aber ich habe mehrere Wiederholungen ausprobiert, wie ich diesen Wert erreichen kann und weiter davon entfernt bin Die Reparatur.Verwenden von JS, um eine dynamische Zahl zu formatieren
Ich habe zwei JS-Skripte, die derzeit auskommentiert sind, Versuch 1 und Versuch 2 und ich frage mich, ob es in Bezug auf die Variable ist, die vor der Funktion in Versuch 2 definiert ist oder wenn etwas fehlt Ende von beiden, damit das Skript auf den Wert angewendet wird, auf den ich abziele.
Hier ist die codepen ich bisher haben: http://codepen.io/linzgroves/pen/KgGPGX
Wenn jemand Anregungen hat, was hier einstellen, das wäre super hilfsbereit. Vielen Dank!
P.S. Ich habe einige der ähnlichen Fragen, die zur Formatierung von JS-Zahlen gestellt wurden (wie this) angeschaut (und ausprobiert), aber mein Problem scheint eher darin zu bestehen, dass ich den Wert innerhalb des span-Tags und nicht mit JS falsch anvisiere selbst. Wenn es jedoch eine ähnliche Frage bezüglich der Ausrichtung von Elementen gibt, würde ich gerne darauf hinweisen.
Lassen Sie mich auch wissen, ob es zusätzliche Informationen gibt, die ich bereitstellen muss.
Danke!
<div id="container">
<div id="inner">
<div id="message_container">
<div id="roi-headline">
<h2>Cool Header</h2>
<h1>An even cooler headline</h1>
</div>
<div id="roi-values">
<div id="roi-value-1">
<div id="roi-value-1-graph" style="width:75%;">
<em>from</em> <sup>$</sup>
<span id="old" class="current">
100000
</span>
</div>
</div>
<div id="roi-value-2">
<div id="roi-value-2-graph" style="width:100%;">
<em>to</em>
<span><sup>$</sup>15<sup>K</sup></span>
</div>
</div>
</div>
<div id="button">Learn More</div>
</div>
</div>
</div>
Edit: die folgende var aktualisiert .innerText enthalten
/* Attempt 1 */
var num = document.getElementById("old").innerText;
function nFormatter(num) {
if (num >= 1000000000) {
return (num/1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
}
if (num >= 1000000) {
return (num/1000000).toFixed(1).replace(/\.0$/, '') + 'M';
}
if (num >= 1000) {
return (num/1000).toFixed(1).replace(/\.0$/, '') + 'K';
}
return num;
};
/* Attempt 2 */
var value = "span.current";
function prettifyNumber(value) {
var thousand = 1000;
var million = 1000000;
var billion = 1000000000;
var trillion = 1000000000000;
if (value < thousand) {
return String(value);
}
if (value >= thousand && value <= 1000000) {
return Math.round(value/thousand) + 'k';
}
if (value >= million && value <= billion) {
return Math.round(value/million) + 'M';
}
if (value >= billion && value <= trillion) {
return Math.round(value/billion) + 'B';
}
else {
return Math.round(value/trillion) + 'T';
}
};
'document.getElementById (" alt ")' gibt ein DOM-Element und keine Zahl zurück. Wenn Sie 'document.getElementById (" alt "). InnerText' in Ihre' nFormatter() '-Funktion übergeben, erhalten Sie die gewünschte Ausgabe – mhodges
@mhodges Vielen Dank für die Antwort! Ich hatte das vorher versucht und den Code wieder angepasst, um das einzuschließen und sehe immer noch keine Auswirkungen auf die 10000 in diesem Bereich:/Ist es richtig, dass die Variable 'num' außerhalb der Funktion definiert wird? – linzerlion
Die einzige Möglichkeit, Ihre Änderungen im DOM widergespiegelt werden, ist, wenn Sie den inneren Text oder innerHTML des DOM-Elements festlegen. Machst du das irgendwo? Ich sehe es nicht in dem Code, den Sie zur Verfügung gestellt haben – mhodges