2013-01-17 43 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); 
相关问题