2011-06-24 5 views
1

私はページ内の要素にクラスを追加しようとしていましたが、コード内で問題が見つかりません。私は '。b001'を見つけてその要素クラス 'ct01'を追加しようとしています。 '.b005、.b002'と同じクラス 'ct02'などを追加します。 PadDigitsは、数字の前に0の指定されたnumを追加します。multidim配列を使った作業基本的な質問

ありがとうございます!

function PadDigits(n, totalDigits) { 
    n = n.toString(); 
    var pd = ''; 
    if (totalDigits > n.length) 
    { 
     for (i=0; i < (totalDigits-n.length); i++) 
     { 
      pd += '0'; 
     } 
    } 
    return pd + n.toString(); 
} 

var filatrans = new Array(); 
filatrans[0] = '1'; 
filatrans[1] = '5 2'; 
filatrans[2] = '9 6 3'; 
filatrans[3] = '12 10 7 4'; 
filatrans[4] = '15 13 11'; 
filatrans[5] = '26 21 18 16 14'; 
filatrans[6] = '33 27 22 19 17'; 
filatrans[7] = '40 34 28 23 20'; 
filatrans[8] = '47 41 35 29 24'; 
filatrans[9] = '54 48 42 36 30 25'; 
filatrans[10] = '61 55 49 43 37 31'; 
filatrans[11] = '68 62 56 50 44 38 32'; 
filatrans[12] = '75 69 63 57 51 45 39'; 
filatrans[13] = '82 76 70 64 58 52 46'; 
filatrans[14] = '89 83 77 71 65 59 53'; 
filatrans[15] = '96 90 84 78 72 66 60'; 
filatrans[16] = '103 97 91 85 79 73 67'; 
filatrans[17] = '110 104 98 92 86 80 74'; 
filatrans[18] = '117 111 105 99 93 87 81'; 
filatrans[19] = '124 118 112 106 100 94 88'; 
filatrans[20] = '125 119 113 107 101 95'; 
filatrans[21] = '126 120 114 108 102'; 
filatrans[22] = '127 121 115 109'; 
filatrans[23] = '128 122 116'; 
filatrans[24] = '129 123'; 
filatrans[25] = '130'; 

var w = filatrans; 
for (e=0; e<w.length; e++) { 
    fila = w[e].split(' '); 
    var out; 
    for (e=0; e<fila.length; e++) { 
     out += '.b' + PadDigits(fila[e], 3) + ', '; 
    } 
    $(out).addClass('ct' + PadDigits(e+1, 2)); 
} 
+0

どのようなエラーが表示されますか?あなたが望むように働かないものは何ですか? – Dogbert

+0

アレイと何が関係していますか? – locrizak

+2

そして両方のループでループカウンターとして 'e'を使用しています。 – Dogbert

答えて

1

として開始されます他の人はすでに言及している。

タイトルにもかかわらず、多目的配列を使用していないため、文字列の配列を使用しているだけで、各文字列から新しい配列を作成しています。配列のリテラル構文を使用すると、配列の作成を簡素化できます。また、文字列ではなく実際の配列で作成することもできます。そうすれば、ループ内に配列を作成する必要はありません。

また、簡略化されたpadDigits関数を作成しました。

function padDigits(n, totalDigits) { 
    n = n.toString(); 
    while (n.length < totalDigits) n = '0'+n; 
    return n; 
} 

var filatrans = [ 
    [1], 
    [5, 2], 
    [9, 6, 3], 
    [12, 10, 7, 4], 
    [15, 13, 11], 
    [26, 21, 18, 16, 14], 
    [33, 27, 22, 19, 17], 
    [40, 34, 28, 23, 20], 
    [47, 41, 35, 29, 24], 
    [54, 48, 42, 36, 30, 25], 
    [61, 55, 49, 43, 37, 31], 
    [68, 62, 56, 50, 44, 38, 32], 
    [75, 69, 63, 57, 51, 45, 39], 
    [82, 76, 70, 64, 58, 52, 46], 
    [89, 83, 77, 71, 65, 59, 53], 
    [96, 90, 84, 78, 72, 66, 60], 
    [103, 97, 91, 85, 79, 73, 67], 
    [110, 104, 98, 92, 86, 80, 74], 
    [117, 111, 105, 99, 93, 87, 81], 
    [124, 118, 112, 106, 100, 94, 88], 
    [125, 119, 113, 107, 101, 95], 
    [126, 120, 114, 108, 102], 
    [127, 121, 115, 109], 
    [128, 122, 116], 
    [129, 123], 
    [130] 
]; 

var w = filatrans; 
for (var e = 0; e < w.length; e++) { 
    var out; 
    for (var f = 0; f < w[e].length; f++) { 
     out += '.b' + padDigits(w[e][f], 3) + ', '; 
    } 
    $(out).addClass('ct' + PadDigits(e+1, 2)); 
} 
+0

ありがとうございました。とても役に立ちました。 :D –

0

あなたが無限ループにそれを引き起こし、二forループ内の変数eをリセットしているようです。

また、ループでキーワードvarを使用して、その反復変数を関数のローカルにすることができます。

また、あなたは、空の文字列にvar outを設定してください、またはそれがコードの問題は、あなたのように、ネストされたループに同じ変数を使用しているのは勿論であるundefined

function PadDigits(n, totalDigits) { 
    n = n.toString(); 
    var pd = ''; 
    if (totalDigits > n.length) 
    { 
     for (var i=0; i < (totalDigits-n.length); i++) 
     { 
      pd += '0'; 
     } 
    } 
    return pd + n.toString(); 
} 

var filatrans = new Array(); 
filatrans[0] = '1'; 
filatrans[1] = '5 2'; 
filatrans[2] = '9 6 3'; 
filatrans[3] = '12 10 7 4'; 
filatrans[4] = '15 13 11'; 
filatrans[5] = '26 21 18 16 14'; 
filatrans[6] = '33 27 22 19 17'; 
filatrans[7] = '40 34 28 23 20'; 
filatrans[8] = '47 41 35 29 24'; 
filatrans[9] = '54 48 42 36 30 25'; 
filatrans[10] = '61 55 49 43 37 31'; 
filatrans[11] = '68 62 56 50 44 38 32'; 
filatrans[12] = '75 69 63 57 51 45 39'; 
filatrans[13] = '82 76 70 64 58 52 46'; 
filatrans[14] = '89 83 77 71 65 59 53'; 
filatrans[15] = '96 90 84 78 72 66 60'; 
filatrans[16] = '103 97 91 85 79 73 67'; 
filatrans[17] = '110 104 98 92 86 80 74'; 
filatrans[18] = '117 111 105 99 93 87 81'; 
filatrans[19] = '124 118 112 106 100 94 88'; 
filatrans[20] = '125 119 113 107 101 95'; 
filatrans[21] = '126 120 114 108 102'; 
filatrans[22] = '127 121 115 109'; 
filatrans[23] = '128 122 116'; 
filatrans[24] = '129 123'; 
filatrans[25] = '130'; 

var w = filatrans; 
for (var i=0; i<w.length; i++) { 
    fila = w[i].split(' '); 
    var out = "" 
    for (var j=0; j<fila.length; j++) { 
     out += '.b' + PadDigits(fila[j], 3) + ', '; 
    } 
    $(out).addClass('ct' + PadDigits(i+1, 2)); 
} 
+0

ありがとうございました。DDD –