赤字:JavaScriptの命令や重要なタグ/青字:用途に応じて変更する部分/緑字:変更可能な変数名やユーザー関数名
<form name="form_zero"> <input type="text" name="f_number" value="123456.7890"> <input type="text" name="f_digit" value="5" size="2"> <input type="button" value="→" onClick="setDigit()"> <input type="text" name="f_output"> </form> <script type="text/javascript"> //フォームから数値を取得 function setDigit() { var num = document.form_zero.f_number.value; //数値(*1) var digit = document.form_zero.f_digit.value; //揃える桁数(*2) document.form_zero.f_output.value = getZeroDigit(num,digit); //(*3) } //ゼロで桁数を揃える function getZeroDigit(num,digit) { var n,m,s; //数値を文字列化(*4) if (isNaN(num)) { s = num; //10進数以外にも対応 } else { s = num.toString(); //数値のままではlengthが使えない } //足りない桁数分の0を加える(*5) m = digit - s.length;
for (n=0;n<m;n++) {
s = "0" + s;
} //戻り値(テキスト) return s; } </script>
(*1)でフォームから元となる数値を変数numに取得し、(*2)で変数digitに桁数をフォームから取得しています。(*3)で専用のユーザー関数を呼び出して結果を出力しています。
ユーザー関数getZeroDigit
(*4)ここでは変数numが文字列の場合と数値の場合に処理を分けています。入力される数値が10進数以外の場合、文字列として入って来ます。数値の場合は文字列に変換して変数sに入れています。
(*5)まず、変数digitと変数sの長さ(数値numの桁数)を差引して、足りない桁数の数だけ0を変数s(文字列化した数値num)の頭に加えています。
最大の桁数が固定で決まっている場合、(*5)の処理を単純化することができます。
以下は4桁に揃える場合の処理です。
//足りない桁数分の0を加える(*5) s = "000" + s; //4桁以上に揃える s = s.substr(s.length-4,4); //戻り値(テキスト) return s;
変数sには一桁以上入っているので頭に0を3つ足してから、後ろの4文字を取得しています。そうすれば、足しすぎた0が消えて4桁の数字となります。
日付や時刻の場合、2桁に揃えるのでif文を使います。
function getZeroDigit2(num) { if (num < 10) num = "0" + num; return num; }
数値が一桁の場合にのみ0を付加します。