0

私はこのjsを持っています...

$("#form").submit(function(){  
var answerlist = "first";  
var answerlist = answerlist + "," + $("#get_answer").attr("value");  
alert(answerlist);  
});

#get_answerIDを持つ入力フィールドの値を変数に追加しようとしていanswelistます...。

answerlist私は、 is now = first move//ここで、入力フィールドの値がありmove 、はい、結果は成功であると期待しています。

そして今度は、answerlist変数に別の値を追加しようとしています 。

値はon
、結果が次のようになることを期待していますfirst move on

しかし、私がそれを使用してチェックすると、alert()それは戻りますfirst on

誰かが私をplsssするのを手伝ってもらえますか?

私が欲しいのは、value(string)を変数にインクリメントすることですanswerlist

お気に入り

answerlist = "first";
answerlist = "first move";
answerlist = "first move on";
4

5 に答える 5

3
(function () {
    // to isolate it from rest of the code 

    var handler = function (target) {
        var list = 'first';
        return function () {
            list = list + target.value;
            alert(list);
        };
    },
    action = handler(document.getElementById('get_answer'));

    $(document.getElementById('form')).submit( action );

}());

この構造は「クロージャー」と呼ばれ、JavaScript言語で最も重要な機能の1つであり、その使用方法を学ぶ必要があります。この講義が役立つかもしれません。

$.attr()そして、些細なことには使用をやめてください。

于 2012-04-21T13:04:17.970 に答える
2

ここにあるスニペットでは、2行目に常に回答リストを設定しているため、「最初に移動」以上のことはできません。これは、フォームが送信されたときにのみ生成されます。したがって、入力の値が「移動」されない限り、期待される結果が表示されることはありません。

必要に応じて、answerlist変数を関数スコープの外に置き、入力が変更されるたびに値を追加することができます...

var answerlist = "first";  
$("#form #get_answer").change(function(){  
    answerlist = answerlist + "," + $("#get_answer").val();  
});
$("#form").submit(function(){  
    alert(answerlist);  
});

ただし、このリストから何も削除できないことに注意してください。代わりに、アイテムを削除する可能性が必要な場合は、配列を使用して値をプッシュ/ポップすることをお勧めします。JavaScript配列参照

于 2012-04-21T12:41:59.493 に答える
1

これはそれを行う必要があります

$("#form").submit(function(){  
   var answerlist = "first";  
   var answerlist = answerlist + "," + $("#get_answer").val();  
   alert(answerlist);  
});

編集:

デモ

于 2012-04-21T12:34:17.363 に答える
1

関数内で変数の値を初期化しているので、当然、もう一度呼び出されると、値は最初に戻ります。

関数の外で初期化します。

于 2012-04-21T12:38:09.957 に答える
0

これを試して...

var answerlist = answerlist + "," + $("#get_answer").val();  
于 2012-04-21T12:34:42.380 に答える