-8

以下の文字列は、5 つのカンマ区切りの値の後に複数の配列に分割する必要があります。次に、スクリプトを使用して、各配列の値をテキスト ボックスの値に配置する必要があります。以下のコードを分割して配列に割り当てようとしましたが、機能しませんでした。これを解決する方法はありますか? <%=ab%>以下のコードを含む JavaScript 変数です。

[768.234.232, 768.234.232, 574,10-10-2012, 10-10-2012, 768.234.232, 768.234.232, 987, 10-10-2012, 10-10-2012]

function functionOne() {
    var list = "<%=ab%>";
    var ab = new Array();
    var i = 0;
    for (i = 0; i < 10; i++) {
        ab[i] = list.split(",", 3);
        alert(ab[i]);
    }
}
4

2 に答える 2

1

「5 つのカンマ区切りの値の後に複数の配列に分割する必要があります」

結果は 5 つの値を含む 1 つの配列であり、次に次の 5 つの値を含む 2 つ目の配列である必要があると言っているようです。その場合は、次のことができます。

var list = "<%=ab%>";
list = list.slice(1,-1);                 // remove the enclosing []
var allValues = list.split(/\s*,\s*/);   // split on comma with optional whitespace
var a = [];
for (var i = 0; i < allValues.length; i+=5) {
    a.push( allValues.slice(i, i+5<=allValues.length ? i+5 : allValues.length) );
}

上記を実行すると、a他の配列を含む配列になります。a[0]は最初の 5 つの項目の配列なので、たとえばa[0][2]は 3 番目の項目です。a[1]次の 5 つの項目の配列です。元のリストに 10 個を超える項目があった場合a[2]は、次の 5 つの項目の配列になります。項目の総数が 5 で割り切れない場合は、最後の配列が残りを保持します。

デモ: http://jsfiddle.net/9xAxz/

「次に、各配列の値をテキストボックスの値に入れる必要があります」

ええと...それはテキストボックスごとに1つのアイテムを意味しますか? もしそうなら、なぜ5つの値で分割したかったのですか? テキストボックスごとに5つのアイテムを意味しますか? いずれにせよ、テキストボックスを動的に作成することについて話しているのですか? もしそうなら、次のようなコードで上記のコードをたどることができます:

var tb;
for (i = 0; i < a.length; i++) {
    tb = document.createElement('input');
    tb.value = a[i].join(", ");
    document.body.appendChild(tb);
}

デモ: http://jsfiddle.net/9xAxz/1/

上記のいずれかに完全に基づいていない場合は、質問を編集して明確にすることを検討してください。回答する前に明確にする必要があったと思いますが、質問を更新して、その入力に対して希望する出力が何であるかを示してください。

于 2013-07-02T13:15:05.540 に答える
0
function functionOne() {
    var list = "<%=ab%>".split(/,\s?/g);

    for (var i = 0; i < list.length; i++) {
        t = document.createElement('input');
        t.type = 'text';
        t.value = list[i];
        document.body.appendChild(t);
    }
}
functionOne();

http://jsfiddle.net/WJPHt/1/

于 2013-07-02T13:08:22.853 に答える