私は、別のページからのユーザー入力を表示する広告を持っていますが、これらの入力は大きい可能性があるため、JSを適用して$ 1000ではなく$ 1K 、$ 1,000,000の代わりに$ 1Mなどとなります。私はコンソールで動作するいくつかのスクリプトを試しましたが、JSをテストするために入力した値を持つHTMLに接続していません。実際の広告では、ユーザーの入力が何であっても動的な値が引き込まれるため、これがスパンタグ内のものであれば動作することを確認する必要があります。 #old id/.currentクラスを使用して最初のスパン内の値をどのように呼び出すのかという点については問題があると確信していますが、その値をどのようにターゲットに設定するのかをいくつか試してみました。修正。JSを使用してダイナミック番号をフォーマットする
私は、現在試行されている2つのJSスクリプトがありますが、試行1と試行2があります。試行2の関数の前に定義されている変数と関連しているのか、私が目標とする値にスクリプトを適用させるには、ここで
は、私が持っているcodepenは、これまでのところです:http://codepen.io/linzgroves/pen/KgGPGX
誰もがここで調整するかについての提案を持っている場合、それはスーパー役に立つことと思います。ありがとうございました!
P.S.私はJS番号の書式設定(例えばthis)について尋ねられている同様の質問のいくつかを見てきましたが、私の問題は間違ってスパンタグ内の値を対象としていました。自体。しかし、要素を正しくターゲット設定することに関連する同様の質問がある場合は、その点も指摘しておきます。
また、追加情報が必要な場合はお知らせください。
ありがとうございます!
<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>
編集: .innerText
/* 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(" old ")'は数値ではなくDOM要素を返します。 'document.getElementById(" old ")。innerText'を' nFormatter() '関数に渡すと、希望の出力 – mhodges
@mhodges応答いただきありがとうございます!私はそれを以前に試してみましたが、そのコードを再度調整して、そのスパン内の10000には影響しません。/変数 'num'が関数の外で定義されるのは正しいですか? – linzerlion
DOMエレメントのinnerTextまたはinnerHTMLを設定すると、変更がDOMに反映される唯一の方法です。あなたはどこでもそれをやっていますか?私はあなたが提供したコードでは表示されません – mhodges