Reitérer un fonction en javascript à l'infini

Résolu
emma22 - Modifié le 31 déc. 2020 à 20:47
 emma22 - 5 janv. 2021 à 01:14
Hello à tous,
j'ai besoin de votre aide, je voudrais réitérer une fonction à l'infini celle ci contient des ouvertures et des fermetures de popups on click, mais a un moment je supprime un marqueur de la map.. je souhaite après la suppression du marqueur réiterer la fonction..quelle boucle dois je faire? dois je utiliser un continue; un callback, recurse, je suis un peu perdue... pouvez vous m'aider s'il vous plait? Merci d'avance !

3 réponses

@karamel
Messages postés
1807
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
5 mai 2022
144
31 déc. 2020 à 23:55
bonjour

vois du cote de setTimeout ou setInterval
0
merci Karamel ! ta methode fonctionne mais je ne veux pas de delai, je voudrais que la fonction se reitere apres la suppression du marqueur mapbox au 3e clic sur un bouton
0
@karamel
Messages postés
1807
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
5 mai 2022
144
3 janv. 2021 à 19:02
il faut creer une variable qui s'increment a chaque clic et au bout de trois clic la variable vaudra donc trois et il suffit juste d'ajouter une condition (if) qui controle la valeur de la variable afin d'agir.
0
Ok merci beaucoup pour ton aide Karamel, je vais essayer...
0
var counter = 0;
function changeImage1(){
counter++;
var marker1 = document.getElementById('marker1');
var marker1 = new mapboxgl.Marker({
color: '#ff8e0a',
className: 'marker1'
}) // Initialize a new marker
.setLngLat([]) // Marker [lng, lat] coordinates
.setPopup(new mapboxgl.Popup({
offset: 25,
className: 'popup1'
}) // add popups,

button1.onclick = function (){
counter++;
if(counter===2){
if (button1.style.display !== 'none') {
div1.style.display = 'block';
block1.style.display = 'block';
button1.style.display = 'none';
$('#border2,#border3,#border4').prop("disabled", true);
} else {
div1.style.display = 'none';
block1.style.display = 'none';
button1.style.display = 'block';
}
}
div1.onclick = function (){
if (div1.style.display !== 'none') {
div1.style.display = 'none';
block1.style.display = 'none';
button1.style.display = 'block';
$('#border2,#border3,#border4').prop("disabled", false);
} else {
div1.style.display = 'block';
block1.style.display = 'block';
button1.style.display = 'none';
}
}
button1.onclick = function(){
counter++;
if(counter===3){
marker1.remove();
}
}
}
}

ça fonctionne mais je ne sais pas comment revenir au début dois je rajouter --counter; pour revenir au 1er click comment fait on? Merci d'avance
0
c'est bon j'ai résolu mon problème j'ai rajouté
 button1.addEventListener('click', changeImage1, marker1.remove() ); 
0