Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在一个循环中循环三个div-一些div没有改变_Javascript_Jquery - Fatal编程技术网

Javascript 在一个循环中循环三个div-一些div没有改变

Javascript 在一个循环中循环三个div-一些div没有改变,javascript,jquery,Javascript,Jquery,大家好!关于用户显示和javascript的快速问题。我要做的是关闭更新箭头gif,显示旋转箭头,执行更新,隐藏旋转箭头,最后显示表示此项已设置的gif 我的问题是旋转箭头从不显示。我把睡眠放在那里是因为我认为更新发生得太快了,以至于我没有看到它,但事实似乎并非如此 非常感谢您的帮助 function sleep(milliSeconds){ var startTime = new Date().getTime(); // get the current time whi

大家好!关于用户显示和javascript的快速问题。我要做的是关闭更新箭头gif,显示旋转箭头,执行更新,隐藏旋转箭头,最后显示表示此项已设置的gif

我的问题是旋转箭头从不显示。我把睡眠放在那里是因为我认为更新发生得太快了,以至于我没有看到它,但事实似乎并非如此

非常感谢您的帮助

    function sleep(milliSeconds){
    var startTime = new Date().getTime(); // get the current time
    while (new Date().getTime() < startTime + milliSeconds); // hog cpu
}

function UpdateConfig(some_id) {
    /* loop through all divs of class .changed_dropdown and if visible do something */
    $(".changed_dropdown").each(function(index) {
        if($(this).is(":visible")){ 

            some_id = ($(this).data('some_id'));
            /* turn off the div that shows this is in need of update (uparrow gif) */
            $('#changed'+some_id).toggle(false);
            /* turn on the div that displays the arrows going around in a circle (roundarrow gif) */
            $('#updating'+some_id).toggle(true);

            /* pause to allow the divs to change */
            sleep(500);
            var new_config = $("#" + some_id).val();
            $.post("change_config.php?some_id="+some_id+"&config="+new_config);

            /* turn off the div that displays the arrows going around in a circle (roundarrow gif) */
            $('#updating'+some_id).toggle(false);
            /* turn on the gif that indicates this is the current setting */
            $('#unchanged'+some_id).toggle(true);

        }
    }); 
}
函数睡眠(毫秒){
var startTime=new Date().getTime();//获取当前时间
while(new Date().getTime()
只需将最后两行放入作为“$.post()”处理程序传入的函数中:

“$.post()”启动HTTP请求,但它会立即返回。通过延迟第二批切换直到完成,您可以让其他事情发生,包括视图的更新

编辑-另一个问题(我很确定)是您使用参数“some_id”的方式非常可疑。它是“UpdateConfig()”的参数,但您所做的只是从元素上的某些数据重新分配它。但是因为它是在函数顶部“.each()”循环的处理程序之外声明的,所以它实际上是由每个迭代共享的,因此也是由所有“$.post()”处理程序共享的。我不知道为什么它是一个参数,但是简单地更改从“.data()”调用分配它的行应该是安全的:


通过使用
var
声明它,可以使它成为“.each()”回调的局部变量,因此每个“$.post()”处理程序都有自己的副本。

只需将最后两行放入作为“$.post()”处理程序传入的函数中:

“$.post()”启动HTTP请求,但它会立即返回。通过延迟第二批切换直到完成,您可以让其他事情发生,包括视图的更新

编辑-另一个问题(我很确定)是您使用参数“some_id”的方式非常可疑。它是“UpdateConfig()”的参数,但您所做的只是从元素上的某些数据重新分配它。但是因为它是在函数顶部“.each()”循环的处理程序之外声明的,所以它实际上是由每个迭代共享的,因此也是由所有“$.post()”处理程序共享的。我不知道为什么它是一个参数,但是简单地更改从“.data()”调用分配它的行应该是安全的:


通过使用
var
声明它,可以使它成为“.each()”回调的局部变量,因此每个“$.post()”处理程序都有自己的副本。

如果在代码中放入类似的睡眠函数,文档DOM不会更新,它只会挂起浏览器。它仅在脚本完成当前运行时更新。您必须使用setTimeout和异步操作,并在回调函数中更新文档。

您的文档DOM不会更新。如果您在代码中放入类似的睡眠函数,它只会挂起浏览器。它仅在脚本完成当前运行时更新。您必须使用setTimeout和异步操作,并在回调函数中更新您的文档。

这确实使旋转箭头显示出来,但现在处理程序中的切换不起作用。好的,我想我明白了为什么会发生这种情况-我将更新答案。您对某个id的看法是正确的,我还没有机会清理它。谢谢你的提醒。虽然第二批切换仍然不会触发。好的,我收回这一点,它们确实会触发,但不会更新显示。我在那里放了一个警报,只是为了测试它,警报触发了。嗯……这确实显示了旋转箭头,但现在处理程序中的切换不起作用。好的,我想我明白了为什么会发生这种情况-我会更新答案。你对某个id的看法是正确的,我还没有机会清理它。谢谢你的提醒。虽然第二批切换仍然不会触发。好的,我收回这一点,它们确实会触发,但不会更新显示。我在那里放了一个警报,只是为了测试它,警报触发了。六羟甲基三聚氰胺六甲醚。。。
     $.post("change_config.php?some_id="+some_id+"&config="+new_config, {}, function() {
       $('#updating'+some_id).toggle(false);
       $('#unchanged'+some_id).toggle(true);
     });
        var some_id = ($(this).data('some_id'));