Lancer une fonction après la fin d'exécution d'une autre fonction [Résolu]

bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 9 déc. 2008 à 17:11 - Dernière réponse : Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention
- 12 déc. 2008 à 12:30
Bonjour,

Actuellement j'ai un input qui lors d'un Onclick se rempli par des coordonnées GoogleMaps, un fois rempli je récupère les données pour les afficher dans un textarea.

Le problème est que lorsque j'utilise à plusieurs reprise le onclik pour afficher plusieurs coordonnées qui s'affiche les unes derriere les autres, ces coordonnées s'affiche deux fois de suite ce qui implique que les coordonnées sont recuperer avant le rafraichissement du input!

Une idée?? j'esperer etre assez clair car ce n'est pas tres facil à expliquer ^^

les codes:

function initialize() {                           // Fonction qui recupere les coordonnées!!!
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        GEvent.addListener(map, "moveend", function() {
          var center = map.getCenter();          var s document.getElementById("message").value center.toString(); // ENVOI les données à l'Input ('message')
            var s1 = s.replace(/ /,"");
            var s2= s1.replace(/\(/,"");
            var s3= s2.replace(/\)/,"");
            document.getElementById('message').value= s3;//coordonnées Lg & Lt
       
        });
        //map.setCenter(new GLatLng(-19.808054, 22.939453), 4, G_SATELLITE_MAP);
           
        geocoder = new GClientGeocoder();
              
      }
  }

FONCTION qui recupere les données de l'input pour les mettre ds le textarea 'A'

function getURL()    {
     
      if(document.getElementById('message').value!==""){
      var i;
    var selectedList = new Array();
    var selectBox = document.getElementById("Villes"); // on cible le select
    var coo = document.getElementById("message").value;
     
    if (document.getElementById('Box').elements[0].checked==true)
        {
        for (i=0; i<selectBox.options.length; i++)
        {   if (selectBox.options[i].selected)
            {
            document.getElementById('A').value+= "http://............="+coo+',red'+i; // affiche la premeire partie du texte area apres le Onclick
            }
        }
        }
    else if (document.getElementById('Box').elements[1].checked==true)
        {
        for (i=0; i<selectBox.options.length; i++)
        {   if (selectBox.options[i].selected)
            {
            document.getElementById('A').value+= "|"+coo+",red"+i;  ajoute les coordonnées apres la 1ere.
            }
        }
        }
           
      }
    };

Input,Onclick, textarea:

<script type="text/javascript">
            <!-- Debut
            var b= 'rr';
            document.write('<form action="" method="">');
            document.write('<textarea name="le_texte" id="A" rows="10" cols="40">'+ b +''+ ET +'</textarea>
');
            document.write('</form>');
            // fin -->
        </script>

merci
Afficher la suite 

23 réponses

Répondre au sujet
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 10 déc. 2008 à 11:48
+3
Utile
function b()
{...}
function a()
{....
 ....
 b();
}

mais est-ce que cela résoudra ton problème ? je doute !
( ou tout au moins, c'est mettre une emplâtre sur une jambe de bois )

         
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Bul3
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 10:34
0
Utile
Je vois que ma question ne motive pas les foules, peut être pas très compréhensible. Pour faire plus simple comment faire pour etre sur qu'une fonction "B" se lance quand la "A" se termine?

merci
Commenter la réponse de bm3w325i
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 10 déc. 2008 à 11:18
0
Utile
bonjour,
          lance ta fonction B dans la fonction A

mais je pense que ton souci est ailleurs !
>>Le problème est que lorsque j'utilise à plusieurs reprise le onclik
pour afficher plusieurs coordonnées
>>qui s'affichent les unes derriere les
autres, ces coordonnées s'affichent deux fois de suite ce qui
>>implique
que les coordonnées sont recuperer avant le rafraichissement du input!
efface avant d'ajouter....

Cordialement

         
Commenter la réponse de Bul3
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 11:38
0
Utile
Merci pour ta réponse mais mes capacités en JScript sont assez limité je débute et je ne sais pas trop comment faire ce que tu me conseil:

fonction B dans la fonction A =>

est ce que l'on fait comme ca:

 function A(){
         functionB(){}
                    };

efface avant d'ajouter =>
Aurais-tu un peut plus d'info? cela me semble etre une bonne solution.
Je dois faire quelque chose comme input.value=""??
Commenter la réponse de bm3w325i
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 11:51
0
Utile
Je vais faire des test mais ne t inquiet tu viens de m'apprendre quelque chose de genial, sur plein de petit projet j ai voulu trouver comment lancer une fonction a partir d'une fonction sans jamais trouver ^^ et c'etait si simple que ca loool.

Merci ^^
Commenter la réponse de bm3w325i
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 12:24
0
Utile
Je viens de faire un test et la fonction B en sous fonction etait bien la solution ^^

Un grand Merci Bul3 :)
Commenter la réponse de bm3w325i
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 10 déc. 2008 à 12:40
0
Utile
nickel si ça baigne, je n'ai pas tout lu,
donc probablement pas tout compris à ton souci
et certes...
mais  document.getElementById('A').value=""; pour effacer avant
de faire les ajouts... ça ne conviendrait pas ?

 
Commenter la réponse de Bul3
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 12:52
0
Utile
J'ai essayer et ca me retourne une valeur vide a chaque fois alors je l'ai surement placé au mauvaise endroit, mais au final la solution de la sous-fonction est genial car elle se lance quand le input est remplie avec la nouvelle valeur et non juste avant ^^.

J'ai un autre souci et pour ne pas réouvrir un sujet peut être aurai tu encore un super réponse ^^:

=> Dans :

"for (i=0; i<selectBox.options.length; i++)
        {   if (selectBox.options[i].selected)
            {
            document.getElementById('A').value+= "http://............="+coo+',red'+i;"

à la fin je met la variable  "i" pour qu'il me retourne la valeur du choix, c'est a dire lors du premier choix il me met 1, lors du 2eme "2" ...etc; le problème ici c'est qu'il me retourne le numero de l'index ce qui est normal au final car je travail sur "i<selectBox.options.length".

Normalment, si je ne me trompe pas il me faut une boucle for, mais je ne sait pas sur quoi travailler?

merci
Commenter la réponse de bm3w325i
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 10 déc. 2008 à 14:30
0
Utile
pas assez de données pour répondre...
id="A".value c'est quoi ?
et là, tu ajoutes plusieurs "http" ?
>>e problème ici c'est qu'il me retourne le numero de l'index ce qui est
normal
>>au final car je travail sur "i<selectBox.options.length
navré... pas compris.
ce genre de choses peut poser problème, si je suppuet comme il faut,
  mais pas dans les circonstances que tu décris
         
Commenter la réponse de Bul3
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 15:43
0
Utile
id=A c'est mon textarea.

dans ce textarea j'ajoute par defaut une url et a la fin de cette URL devrait apparaitre le numero du choix, donc le "i".

Imagine que tu as un select avec plusieur choix, on te demande de selectionner dans l'ordre de tes preferences les choix, a chaque choix tu valide par un submit et le resultat s'affiche dans le textarea:

exemple sur liste de ville:
le select => paris/nice/lille/dijon

le textarea apres les choix:
nice1 - paris2  -dijon3 -lille4...

J espere que cel eclairci mon probleme, je veux que lorsque les choix apparaisse dans le textarea qu'il soient suivi de le numero d'arrivée.
Commenter la réponse de bm3w325i
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 10 déc. 2008 à 16:01
0
Utile
le_select_en_question.options[le_select_en_question.selectedIndex].text
          c'est le texte de l'option sélectionnée
le_select_en_question.options[le_select_en_question.selectedIndex].value

          c'est le value de l'option sélectionnée
le_select_en_question.selectedIndex
         

c'est le n° de ligne de l'option sélectionnée
         
Commenter la réponse de Bul3
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 16:33
0
Utile
merci mais de ces 3 données aucunes ne peut me servir  pour déterminer en quelle position le choix a été fait, du moins pas ainsi.
J'ai beau tourné la question dans tous les sens je dois dire que je ne vois pas il faudrait reussir a trouver comment déterminer l'ordre des choix?! et je ne peut ni utilisé le text ni value ni selectedindex car ces dernier varient.
Commenter la réponse de bm3w325i
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 10 déc. 2008 à 16:50
0
Utile
ah... tu peux avoir plusieurs sélections ? c'est un select multiple ?
alors effectivement il faut boucler
for ( var lig=0; lig<le_select_en_question.length; lig++)
{ if ( le_select_en_question.options[lig].selected )
  { l'option est  sélectionnée et c'est la ligne lig }
}
         
Commenter la réponse de Bul3
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 16:58
0
Utile
Alors ce n est pas un select multiple , a chaque fois que l'ont fait un choix on doit le valider et ce choix s'ajoute au textarea. j'ai tenté un le_select_en_question.length mais ca ne marche pas cela me retroune la position dans les select et non l'ordre de choix.
Commenter la réponse de bm3w325i
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 17:24
0
Utile
Je vais poser ma question dans un nouveau sujet ca serait plus simple ^^
Commenter la réponse de bm3w325i
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 10 déc. 2008 à 17:37
0
Utile
et bien... le n° de l'option sélectionnée c'est le_select_en_question.selectedIndex
         
Commenter la réponse de Bul3
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 17:44
0
Utile
Justement je m en suis bien rendu compte lol et ce n'est helas pas le numero de l'option que je veux peut etre qu'il faut que je cherche dans une autre direction. ne pas me base sur le choix fait dans le select mais plus quelque chose comme si la variable afficher dans le textarea est la premiere alors mettre 1 (ca me fait pense a un switch case non?!).
Commenter la réponse de bm3w325i
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 10 déc. 2008 à 17:50
0
Utile
alors... ne sachant pas ce que tu recherches et
si ce n'est pas lié à l'option choisie...
en l'état, je ne peux répondre.
         
Commenter la réponse de Bul3
bm3w325i 37 Messages postés vendredi 11 août 2006Date d'inscription 17 décembre 2008 Dernière intervention - 10 déc. 2008 à 17:59
0
Utile
En effet j'ai bien l'impression que tu ne comprend pas trop ce que je veux, j'ai ouvert un nouveau sujet avec un exemple que j'espère être assez simple. Car je ne vois plus comment expliquer mon problème.
En tout cas merci pour ton aide.
Commenter la réponse de bm3w325i
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 10 déc. 2008 à 19:10
0
Utile
Bonjour à tous,
et pourquoi vouloir mettre
l'indice au fil de l'eau ?
Il te suffit de mettre un retour chariot, par
exemple ou autre tiret, à chaque fois que tu ajoutes puis de rajouter à la fin,
tu connais de ce fait bien l'ordre, et avec une méthode split ou une autre tu peux récupérer dans un
tableau...

Autrement tu peux également affecter à ta TEXTAREA un
attribut count que tu incrémentes à chaque ajout, et que tu peux dans ce
cas mettre en fin de ville.

For


[../auteur/BUL3/812304.aspx Bul3]





A quand un tuto complet sur les
SELECTs?


;O)
Commenter la réponse de PetoleTeam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Lancer une fonction après la fin d'exécution d'une autre fonction - page 2