2013-03-07 46 views
-1

我想添加一個1之後的前一個數字變量爲它添加到一個文本框的值附加字段的用戶。在這個階段,它從一開始,點擊加號圖標,它會變成兩個。但再次按下,它會保持兩個。似乎無法+1變量的JavaScript變量

如何將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; 
} 
+3

的'parseInt'調用是有點意義的,不是嗎? – nfechner 2013-03-07 10:53:12

+2

按照你的代碼...從上到下......首先你將'fieldCount'設置爲1,然後你把'newCount'設置爲'fieldCount'(它是1)加上1的內容。所以'newCount'永遠是2.其餘的你可以自己想出 – devnull69 2013-03-07 10:53:18

+0

我懷疑你試圖簡化你的代碼這個問題? – 2013-03-07 10:54:00

回答

2

要添加段計數 ..所以WHN點擊,段計數爲1和功能得到2..bravoo ..工作正常..但隨後第二次點擊...... 段計數爲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; 
} 
-3

如何改變var newCount = parseInt(fieldCount+1);var newCount = parseInt(fieldCount)+1;

(未經測試)

1

我認爲這個問題是每一個功能addAucField()被調用段計數變量被設置回1.儘量到外面把它定義時間功能。

+0

'fieldCount'永遠不會設置爲其他任何值,但在方法外定義它不會改變它。 (雖然這是合理的第一步)。 – Quentin 2013-03-07 10:55:45

+0

它實際上是在函數內部增加的,所以爲什麼不應該在函數外部定義變量會改變什麼? – yaens 2013-03-07 11:03:53

+0

它在函數內部不*增加。 'foo = bar + 1'不會修改'bar'。 – Quentin 2013-03-07 11:04:58

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; 
}; 
+0

而你不會說這會是「用一個經典炮擊麻雀」? – devnull69 2013-03-07 10:57:55

+0

@ devnull69:如果我潛在地引入了一種OP可能未知的技術,那麼它是有道理的。 – Zeta 2013-03-07 11:01:22

相關問題