-1

我试图在前一个数字之后将 1 添加到变量中,以便在用户附加字段时将其添加到文本框的值中。在这个阶段,它从一个开始,单击加号图标,它转到两个。但再次按下它,它会保持在两个状态。

如何在前一个数字上加 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 .. 工作正常.. 但是第二次点击... fieldCount是 1 (再次)... 所以得到 2 (所以你的函数是很好......)......但输出不正确......所以放在fieldCount函数之外......并将其更改为newcount的值..下次fieldCount是2,你会得到3。

它应该是

 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 回答