2017-05-26 1 views
1

Je souhaite ajouter et supprimer une classe à une div en fonction du temps. Il devrait ajouter une classe après 6 secondes et l'enlever après 4 secondes. J'ai essayé une implémentation de base. pourquoi n'est pas this de travail? Je suppose que le problème est deux setTimeouts ensemble comme ceci. Si je commente la deuxième ligne, la première fonctionne. Que se passe-t-il ici?
Utilisation de setTimeout pour ajouter et supprimer une classe

setTimeout(addHighlight(), 6000); 
setTimeout(removeHighlight(), 10000); 

Quelqu'un peut-il me montrer comment je peux écrire une seule fonction qui fait les deux (ajouter et supprimer la classe) sur la base d'un paramètre delay?

+0

Essayez 'setTimeout (function() {addHighlight(); setTimeout (function() {removeHighlight()}, 4000)}, 6000);' – Abhi

Répondre

5

Essayez ceci:

setTimeout(function() { 
    $('#square').addClass('highlight'); 
}, 6000); 

setTimeout(function() { 
    $('#square').removeClass('highlight'); 
}, 10000); 

https://jsfiddle.net/js6wh78h/8/

+0

Pourquoi mon code ne fonctionne-t-il pas? C'est fondamentalement la même chose. J'ai défini 'function() { $ ('# square'). AddClass ('highlight'); } 'comme' addHighlight' et appelé comme ceci' setTimeout (addHighlight(), 6000); ' –

+0

Remplacez votre setTimeout (addHighlight(), 6000); à setTimeout (ajouterHighlight, 6000); Dans les deux fonctions setTimeout –

+0

je vois ce que j'ai fait, Merci de le signaler. c'était un deal-breaker. –

-1

C'est probablement ce que vous voulez faire:

setTimeout(function(){ 
 
    $("#test").addClass('on'); 
 
    
 
    setTimeout(function(){ 
 
    $("#test").removeClass('on'); 
 
    }, 4000); 
 
}, 6000);
.on { 
 
    background: lime; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="test">hello world</div>

Le premier délai d'attente exécute au bout de 6 secondes, ajoute une classe à la div et démarre un autre délai d'attente, Wich exécute au bout de 4 secondes et supprime la classe.

+0

Pourquoi cette réponse est-elle dépréciée? Cette réponse a essayé de regrouper les deux fonctionnalités en une comme je le souhaitais. –

+0

@anoopchandran probablement parce que la première version n'utilisait pas jquery. Je l'ai ajouté après. – Robert