入力フォームに任意の値を入力して、その分だけ連番で文字列を出力するプログラムを考えています。
出力する文字列はゼロパティングとUTF-16形式への変換を行います。
ソースは以下の通りですが、IEの開発者ツールで実行すると、5桁までは「3030303035」というように出力されるのですが、入力フォームに6以上の値を入力すると、6桁目以降が「NAN」と出力されてしまいます。
どこをどう直したらよいでしょうか?
Javascript
1<html><head> 2<title>連番出力</title> 3</head> 4<SCRIPT type="text/JavaScript"> 5 6function zeroPadding(){ 7 // 入力値取得 8 cStr = document.myform5.text0.value; 9 // 領域設定 10 var oText = ""; 11 var oText2 = ""; 12 var numx = ""; 13 // 変換処理 14 for (i=0; i<cStr; i++) { 15 // 入力値をゼロパティング 16 num = i+1; 17 var numx = ('00000' + num).slice(-5); 18 oText2 = numx.charCodeAt(i).toString(16).toUpperCase(); 19 oText += oText2; 20 // 最後以外は改行付加 21 if(i != cStr - 1){ 22 oText += "\n"; 23 } 24 // 領域初期化 25 oText2 = ""; 26 } 27 document.myform5.text2.value = oText; 28} 29 30</SCRIPT> 31<body> 32<br> 33<br> 34<br> 35連番出力 36<FORM NAME="myform5"><PRE> 37出力件数:<INPUT TYPE="text" name="text0" size=10> <INPUT TYPE="button" VALUE="実行" onClick="zeroPadding();"> 38出力結果:<INPUT TYPE="text" name="text2" size=60> 39</PRE></FORM> 40</body> 41</html>
質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
承知しました。ただいま修正しました。
回答が付いた質問の編集は慎重に行ってください。質問文のコードについて回答にて指摘があった場合は「追記」し、元のコードを編集する場合も「直したこと」がわかるようにしてください。
連番とは? "6"を入力すると"000006"の2文字目以降に対して順に6回処理され最後にNaNを返しますが、これは想定外ということでしょうか?
はい。想定とは異なる動きです。ただ原因は判明していて、numxが5文字までしかないのに6文字目以降の変換処理をしようとしていたためにNaNが返ってきていました。
回答3件
あなたの回答
tips
プレビュー