Problème d'ordre de portée avec l'exécution de code JavaScript ?
phpcn_u1582
phpcn_u1582 2017-06-26 10:51:58
0
2
729

var mark2=true;
$(".right").click(function(){

        if(mark2){
           move(1);
           mark2=false;
        }
    })

fonction déplacer(obj){

             obj.animate({
                    width: arrW[index],
                     height: arrH[index],
                    opacity: arrO[index],
                    left: arrL[index],
                    top: arrT[index]

                },500,function(){
                    mark2=true;
                })
                }
                

Cliquez sur $(".right") pour exécuter la fonction de déplacement, principalement pour ajouter une animation à l'élément obj. Afin d'éviter que $(".right") ne clique trop vite et ne chevauche l'animation, mark2 est utilisé pour la contrôler. . Lorsque l'animation est terminée, c'est-à-dire que la marque sera vraie après 500 millisecondes. Cliquez sur $(".right") pour exécuter, sinon elle ne s'exécutera pas. Mais j'ai une question, c'est-à-dire quand le clic. la vitesse est supérieure à 500 millisecondes, la marque dans l'instruction if Il n'y avait aucune chance de l'exécuter, alors j'ai cliqué à nouveau. Cela ne signifie-t-il pas que l'animation est toujours superposée ? Parce que la marque est toujours vraie, il semble que ma compréhension soit fausse, car le programme peut être exécuté normalement, j'espère donc que quelqu'un pourra me donner des conseils sur le processus d'exécution du programme

phpcn_u1582
phpcn_u1582

répondre à tous(2)
女神的闺蜜爱上我

Je comprends que le cœur de votre problème est que la vitesse de clic est supérieure à 500ms. C'est vrai, seuls mousedown mouseup事件后才会触发 click les événements se déclenchent les uns après les autres sur le même élément. move() ne sera exécuté qu'après le déclenchement de l'événement click

La situation de délai d'attente que vous envisagez ne se produira donc pas.

仅有的幸福

Si vous souhaitez utiliser le contrôle variable, il est préférable de déplacer mark2 vers le haut pour le rendre plus facile à comprendre. Le processus est le suivant :
Si vous :
Cliquez à droite -----》Exécutez une animation asynchrone-----》mark2 = false ----(après 0,5 s)----》mark2 = true;

Donc, peu importe la façon dont vous cliquez, que ce soit supérieur à 0,5 s ou inférieur à 0,5 s, à moins que l'animation ne soit terminée et que mark2 soit vrai, la condition if n'entrera pas du tout

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal