我有一個隱藏的輸入#start這個值是用來顯示一系列返回的數據(這是一個索引的起點),每次你點擊#next我需要增加其價值。基於點擊按鈕增加一個隱藏的輸入值
$("#next").click(function() {
$("#start").val() + 80;
)};
這是正確的嗎?或者,還有更好的方法? thx all!
我有一個隱藏的輸入#start這個值是用來顯示一系列返回的數據(這是一個索引的起點),每次你點擊#next我需要增加其價值。基於點擊按鈕增加一個隱藏的輸入值
$("#next").click(function() {
$("#start").val() + 80;
)};
這是正確的嗎?或者,還有更好的方法? thx all!
您需要將值轉換爲整數,添加任何數量的微博,保存回:
$("#next").click(function(){
var startElement = $("#start");
var value = parseInt(startElement.val(), 10);
startElement.val(value + 80);
});
你所要做的只是檢索val並向其中添加80,但實際上並未將其設置回元素上的值。要做到這一點,請嘗試以下操作:
$("#next").click(function() {
$("#start").val(parseInt($("#start).val()) + 80);
)};
雖然這樣做效率有點低,因爲您會選擇#start兩次。相反,我會緩存#開始選擇在一個變量:
$("#next").click(function() {
var startElement = $("#start");
startElement.val(parseInt(startElement.val()) + 80);
)};
用少量封閉模式:
$("#next").click(function cli() {
var v = 0;
return function() {
$("#start").html(v += 80);
};
}());
每次點擊按鈕,它會設置80。 – NAVEED 2010-09-17 20:27:13
試試這個(demo):
$("#next").click(function() {
$("#start").val(function(i,v){
return parseInt(v,10) + 80 || 0;
});
});
這是另一種方法。它直接訪問value
屬性並使用~~
來避免可能的八進制或NaN
問題。
$("#next").click(function() {
var start = document.getElementById("start");
start.value = ~~start.value + 80;
});
或者更好的辦法是隻運行#start
的選擇器一次如果按鈕可以被點擊多次。
// cache "start" outside the handler
var start = document.getElementById("start");
$("#next").click(function() {
start.value = ~~start.value + 80;
});
'~~'不會保護像「0x22」這樣的值 – jAndy 2010-09-17 20:53:24
@jAndy - 是的,但有什麼可能? :o)我唯一的目的是爲了避免空字符串。看起來好像隱藏輸入的唯一目的是增量。所以考慮到明顯的上下文,'~~'應該沒問題。 – user113716 2010-09-17 21:02:41
針對所有可能性...:p – jAndy 2010-09-17 21:19:16
@KP這會改變#start的值是否正確? – 2010-09-17 20:34:29
你應該包含一個帶'parseInt'函數的基數,以確保返回的值是基數10(http://www.w3schools.com/jsref/jsref_parseInt.asp) – Mottie 2010-09-17 20:41:44
@fudgey編輯並自己修復它(我剛剛因爲我完全同意你的看法)。不要被弄糊塗;這就是這個社區所關心的。 – 2010-09-17 20:47:32