2013-01-17 94 views
0

我有以下function,成功地提高了input type="text"

function deleteLine(arrayNumber) { 
    $("#line" + arrayNumber + "_quantity").val(parseInt($("#line" + arrayNumber + "_quantity").val()) + 1); 
} 

我只是想知道的value爲什麼這些不工作,而不是爲一個整潔的代碼:

$("#line" + arrayNumber + "_quantity").val(this + 1); 
$("#line" + arrayNumber + "_quantity").val(this.value + 1); 
$("#line" + arrayNumber + "_quantity").val($(this).val() + 1); 
+0

沒有足夠的信息來很好地回答這個問題。 – Joe

+0

你可以發佈其餘的功能嗎? – ply

+1

因爲'this'沒有引用'$(「#line」+ arrayNumber +「_quantity」)選擇的DOM元素。它可能指的是'window'或'document'或事件處理程序綁定的任何元素,如果這些行在一個內部。查看MDN文檔以瞭解更多關於'this'的信息:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/this。 –

回答

4

你應該嘗試像下面一樣,

$("#line" + arrayNumber + "_quantity").val(function (i, v) { return +v+1; }); 

您的版本不起作用,因爲this不會引用該文本框。

謝謝@FelixKing爲一元運算符。

+0

謝謝。儘管稍有變化:'return parseInt(v)+ 1' – rybo111

+0

@ rybo111:你應該傳遞一個基數,'parseInt(v,10)',或者只使用一元加號:'return + v + 1;'。 –

0
var lineVar = $("#line" + arrayNumber + "_quantity"); 

lineVar.val(parseInt(lineVar.val()) + 1); 
相關問題