-1

ユーザーがフィールドを追加したときにテキストボックスの値に追加するために、変数の前の数値の後に 1 を追加しようとしています。この段階では、1 から始まり、プラス アイコンをクリックすると 2 になります。しかし、もう一度押すと、2のままです。

前の数字に 1 を足すにはどうすればよいですか?

function addAucField() {
    var fieldCount = 1;
    var newCount = parseInt(fieldCount+1);
    $("#addField").append("<br /><br />\n<input type=\"text\" name=\"aucSpots[]\" placeholder=\"Spot "+newCount+"\" class=\"span9\">");
    return false;
}
4

4 に答える 4

2

fieldCountを追加しているので、クリックすると、fieldCountは1になり、関数は2になります。bravoo ..は正常に機能します。罰金...)...しかし出力が正しくありません...だから関数の外に置きます..そしてそれをnewcountの値に変更します..次回fieldCountが2であるとあなたは3を得るでしょう。fieldCount

そのはず

 var fieldCount = 1;
 function addAucField() {
    var newCount = parseInt(fieldCount+1);
    fieldCount=newCount;
    $("#addField").append("<br /><br />\n<input type=\"text\" name=\"aucSpots[]\" placeholder=\"Spot "+newCount+"\" class=\"span9\">");
   return false;
}
于 2013-03-07T10:53:33.670 に答える
1

問題は、関数addAucField()が呼び出されるたびにfieldCount変数が1に戻されることだと思います。関数の外部で定義してみてください。

于 2013-03-07T10:53:43.377 に答える
1

単純にクロージャを作成し、実際にインクリメントしますfieldCount:

var addAucField = (function() {
    var fieldCount = 1;
    return function() {    
        var newCount = ++fieldCount; // increment fieldCount
        $("#addField").append("<br /><br />\n<input type=\"text\" name=\"aucSpots[]\" placeholder=\"Spot "+newCount+"\" class=\"span9\">");
        return false;
    };
})();

グローバルにすることもできますがfieldCount、ほとんどの場合、グローバル名前空間を汚染するのは悪い考えです。増分fieldCountする必要があることに注意してください:

var fieldCount = 1;
function addAucField(){
    var newCount = ++fieldCount; // increment fieldCount
    $("#addField").append("<br /><br />\n<input type=\"text\" name=\"aucSpots[]\" placeholder=\"Spot "+newCount+"\" class=\"span9\">");
    return false;
 };
于 2013-03-07T10:56:37.777 に答える
-3

に着替えvar newCount = parseInt(fieldCount+1);てみませんかvar newCount = parseInt(fieldCount)+1;

(未テスト)

于 2013-03-07T10:53:39.623 に答える