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?我相信他想完全像其他语言一样暂停循环。