Javascript For循环忽略延迟(300)
我有下面的循环,它应该为Javascript For循环忽略延迟(300),javascript,jquery,for-loop,Javascript,Jquery,For Loop,我有下面的循环,它应该为formInputs中的每个元素添加一个类,等待300毫秒,然后按照flashCount中的定义再次删除它。所以在这种情况下是2次 但是由于某种原因,延迟(300)不起作用,我的循环速度非常快,我甚至看不到它的视觉效果 我怎样才能解决这个问题 for (var key in formInputs) { if (formInputs.hasOwnProperty(key) && !formInputs[key]["input"].val()) {
formInputs
中的每个元素添加一个类,等待300毫秒,然后按照flashCount
中的定义再次删除它。所以在这种情况下是2次
但是由于某种原因,延迟(300)
不起作用,我的循环速度非常快,我甚至看不到它的视觉效果
我怎样才能解决这个问题
for (var key in formInputs) {
if (formInputs.hasOwnProperty(key) && !formInputs[key]["input"].val()) {
var flashCount = 2;
for (var i = 0; i < flashCount; i++) {
formInputs[key]["input"].addClass("hovered").delay(300).removeClass("hovered");
}
}
}
for(表单输入中的变量键){
if(formInputs.hasOwnProperty(key)&&!formInputs[key][“input”].val()){
var flashCount=2;
对于(变量i=0;i
问题是jQuery只在其内部动画队列中使用延迟。由于addClass
和removeClass
不是动画,您必须自己将它们添加到队列中。像这样:
for (var key in formInputs) {
if (formInputs.hasOwnProperty(key) && !formInputs[key]["input"].val()) {
var flashCount = 2;
for (var i = 0; i < flashCount; i++) {
// Add the function to jQuery's animation queue instead of removing the class straight away
formInputs[key]["input"].addClass("hovered").delay(300).queue(function(next){
// Remove the `hovered` class when the queue gets to this
$(this).removeClass("hovered");
// Call the next item in the queue
next();
});
}
}
}
for(表单输入中的变量键){
if(formInputs.hasOwnProperty(key)&&!formInputs[key][“input”].val()){
var flashCount=2;
对于(变量i=0;i
显然,我无法测试这一点,但应该可以工作。问题是jQuery只在其内部动画队列中使用delay
。由于addClass
和removeClass
不是动画,您必须自己将它们添加到队列中。像这样:
for (var key in formInputs) {
if (formInputs.hasOwnProperty(key) && !formInputs[key]["input"].val()) {
var flashCount = 2;
for (var i = 0; i < flashCount; i++) {
// Add the function to jQuery's animation queue instead of removing the class straight away
formInputs[key]["input"].addClass("hovered").delay(300).queue(function(next){
// Remove the `hovered` class when the queue gets to this
$(this).removeClass("hovered");
// Call the next item in the queue
next();
});
}
}
}
for(表单输入中的变量键){
if(formInputs.hasOwnProperty(key)&&!formInputs[key][“input”].val()){
var flashCount=2;
对于(变量i=0;i
显然,我无法测试这一点,但应该可以工作。如果没有for循环,您是否可以获得预期的操作(仅一次)?请仔细阅读文档,了解。delay
的作用。如果没有for循环,您是否可以获得预期的操作(仅一次)?请仔细阅读.delay
的功能文档。不过,这只执行一次。您可以发布更多信息吗?可能是JSFIDLE?这将有助于了解您的问题所在。我相信他希望完全像其他语言一样暂停循环。但这只执行一次。您可以发布更多信息吗?可能是作为JSFIDLE?我相信他想完全像其他语言一样暂停循环。