2

forループを使用して配列にデータを入力しようとしており、次を使用してそのような値を取得していますdocument.getElementById("spin " + i).value;

すべての入力タグのidshtml は、spin1 から spin18 に移動します。

私が間違っていることについて何か提案はありますか?または、何を変更できますか?

var nums = [];

for(var i = 1; i <= 18; i++){
    var num[i] = parseInt(document.getElementById("spin" + i).value);

    nums.push(num[i]);

}

alert(nums.length);
4

3 に答える 3

6

何が問題ですか?生成される結果の種類やフロントエンドのhtmlコードがどのように見えるかについては決して言及しません。

jsはコンパイル可能に見えますが、ここにいくつかの指針があります。

数字の0は1の前です

この考え方を身につけるのは良い習慣です。さらに、後で愚かな間違いをするのを防ぐことができます。とにかく、これを補強するために、以下は数値チャートです。

    010
    1 11
    2 12
    3 13
    4 14
    5 15
    6 16
    7 17
    8 18
    9 19

不要な変数を避ける

冗長なコードを最適化するjsコンパイラを持つことは悲しいことに新機能です。しかし、それでも、1つ持つことができるのに、なぜ2つのラインを維持する必要があるのでしょうか。

var nums = [];

for( var i = 0; i < 18; i++ ) {
    nums[i] = parseInt( document.getElementById("spin" + i).value );
}

押さないで挿入

プッシュ方式はオーバーヘッドが大きいため、注意して使用してください。

ロガー

コンソールにはロガーが組み込まれています。アラートボックスの代わりにロガーを使用してみませんか?

console.log( nums.length );
于 2013-03-18T06:55:52.503 に答える
1

注意すべき点がいくつかあります。

  1. PSRが述べたように、次を使用します。
var num[i]

いつあるべきか

var num
  1. getElementById(id).valueフォーム要素に対してのみ機能します.innerHTML。divに使用する必要があります。

これは私のために働きます:http://jsfiddle.net/sbqeT/

于 2013-03-18T06:46:14.160 に答える
1

これを試して

var nums = [];

for(var i = 1; i <= 18; i++){
    var num= parseInt(document.getElementById("spin" + i).value);

    nums.push(num);

}

alert(nums.length);
于 2013-03-18T06:37:20.380 に答える