2015-10-20 34 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;