2015-10-20 22 views
0

我有這個JavaScript函數jQuery的等價的JavaScript間隔功能的

function addTenPercent(){ 
     var bar = document.getElementById("progressBar"); 
     setInterval(addTenPercent, 5000); 
     bar.value += 10; 
}; 

我想包括它在我的jQuery的if else語句,但沒有運氣

$('#form1').submit(function(e){ 
     if ($.trim($('#store').val()) === "" || $.trim($('#store').val()) === "Enter store number'(nnnn)'") { 
       e.preventDefault(); 
       alert('Please type in store number'); 
     } 
     else { 
       setInterval(function(){ 
       $('#progressBar').val() += 10; 
       },5000); 
     } 
}); 

有人可以幫點放哪兒我把錯誤的轉換爲jQuery的說的JavaScript?

+0

你遇到的問題只在setInterval()部分? – lucusp

+0

@lucusp是的。我沒有看到它正在運行,就像它是在JavaScript版本 – Dren

+0

是否更好的方法,如果我只是在else語句上調用javascript函數? else {addTenPercent(); } – Dren

回答

1

.val()返回元素的當前值,並且不能通過引用修改該值。 guest271314的回答會的工作,但因爲它是很好的做法反正緩存您的jQuery選擇,我建議以下解決方案:

var progressBar = $('#progressBar')[0]; 
setInterval(function() { 
    progressBar.value += 10; 
}, 5000); 

注意progessBar是原始DOM元素,而不是一個jQuery對象,progressBar.value存在通過參考訪問。

+0

謝謝。這工作就像我想要的 – Dren

1

$('#progressBar').val() += 10;未出現設置,重置value的元素?

.val()返回元素的值; += 10不作爲元素上的參數.val()調用。

要設置元素的value,可以使用

$('#progressBar').val($('#progressBar').val() += 10);

或使用.val(function(index, value) {})


嘗試代

$('#progressBar').val(function(_, v) { 
    return v += 10 
}) 

$('#progressBar').val() += 10;