1

次のような名前の配列を使用した入力を含むフォームがあります。

<input type="text" name="answer[0]" />

私が ajax 投稿を行い、データのフォームをシリアル化すると、これらは正常に機能します。今、フォームをシリアル化する場合に取得する構造を模倣する動的オブジェクトを jQuery ajax データに渡そうとしています。これが私がそのために試しているコードです:

function sliderCalc(){
        var step = jQuery('[name="step"]').val();
        var max = jQuery('[name="max"]').val();
        var min = jQuery('[name="min"]').val();
        var count = (max - min) / step;
        var sliderData = {};
        for(i=0; i<=count; i++){
            var value = min + (step * i);
            sliderData.answers[i] = value; // key => value created here
        }
        return sliderData;
    }

次のエラーが表示されます。

キャッチされていない TypeError: 未定義のプロパティ '0' を設定できません

誰かがこれに対する良い解決策を持っていますか?

4

2 に答える 2

1

配列要素を割り当てる前に、最初にanswersプロパティを作成する必要があります:

sliderData.answers = new Array();
于 2012-09-21T19:25:43.120 に答える
0

これは作成する適切な方法ですsliderData

    var sliderData = { answers: [] };
    for(i = 0; i <= count; i++) {
        var value = min + (step * i);
        sliderData.answers[i] = value; 
    }

完全なコード:

function sliderCalc() {
    var
        step = jQuery('[name="step"]').val(),
        max = jQuery('[name="max"]').val(),
        min = jQuery('[name="min"]').val(),
        count = (max - min) / step,
        sliderData = {
            answers: []
        },
        value = 0;

    for (i = 0; i <= count; i++) {
        value = min + (step * i);
        sliderData.answers[i] = value; // key => value created here
    }
    return sliderData;
}​
于 2012-09-21T19:32:14.563 に答える