chrisotphe7502
Messages postés24Date d'inscriptionjeudi 24 avril 2008StatutMembreDernière intervention 2 novembre 2009
-
12 févr. 2009 à 09:09
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 2015
-
17 mars 2009 à 14:37
Bonjour,
mon problème est le suivant, je créé un site web embarqué que je programme en javascript et HTML. Dans une des pages web, j'appel une fonction au chargement, ensuite je souhaite utiliser un des résultat de cette fonction pour la suite de mon script, et le problème, c'est que cette fonction se termine après que je demande la variable en question. Un peu code ça sera surement plus clair ...
la page web :
<head></head>
for(i=0;i<n;i++){
création de n checkbox
}
...
mon script js :
var n=0;
function lec_session() {
$.ajax({
url: "monscriptshell",
success: function(data){
Incrémentation de la variable globale n
}
});
};
Voila, à chaque foid ma variable n est a 0 dans ma page web , si quelqu'un peu m'aider ça serai sympa, merci
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 12 févr. 2009 à 10:08
bonjour,
met tes instructions for(i=0;i<n;i++){ création de n checkbox } je suppose ?
dans la fonction ( peut-être à la place de Incrémentation de la variable globale n ? )
Cordialemen
chrisotphe7502
Messages postés24Date d'inscriptionjeudi 24 avril 2008StatutMembreDernière intervention 2 novembre 2009 12 févr. 2009 à 14:28
En fait je pouvais pas le faire comme ça parce que sinon les actions sur les checkbox n'étais pas pris en compte, en fait j'ai mis for(i=0;i<n;i++){ création de n checkbox dans une fonction appelée avec setTimeout :
setTimeout ("mafonction()",500);
mafonction(){
for(i=0;i<n;i++){ création de n checkbox }
}
Le tout dans le body de ma page web et ça marche nikel.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 12 févr. 2009 à 14:40
>>je pouvais pas le faire comme ça parce que sinon
>>les actions sur les checkbox n'étais pas pris en compte,
navré... rien compris.
>>setTimeout ("mafonction()",500);
certes... mais tu n'es pas à l'abri d'un temps de
réponse > à la 1/2 seconde.. on ne sait jamasi
en javascript lancer une fonction, ça lance la
fonction ET on continue immédiatement en séquence
tu fais
function f1() { traitements 1 }
....
f1();
traitements 2
si on doit attendre la fin de f1, il faut faire :
function f1() { traitements 1
traitements 2
}
...
f1();
chrisotphe7502
Messages postés24Date d'inscriptionjeudi 24 avril 2008StatutMembreDernière intervention 2 novembre 2009 12 févr. 2009 à 15:26
Le temps de réponse est toujours inférieur à la 1/2 seconde dans mon apllication.
Sinon, les checkbox devaient permettre (en autre) de griser et dégriser des boutons. Quand je créée les checkboxs dans la fonction "lec_session", j'avais beau cliquer sur les checkbox, les boutons ne changés pas.
Je sais pas si c'est beaucoup plus clair, mais ça marche bien comme je l'ai et j'ai déjà essaye les technique que tu a énoncé ci-dessus et dans mon cas ça ne marchait pas.
Merci quand même .
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 12 févr. 2009 à 15:39
>>Le temps de réponse est toujours inférieur à la 1/2 seconde dans mon apllication.
pas un problème d'application !
ça dépend du réseau, de la charge...
tu n'es pas à l'abri !
>>j'ai déjà essaye les technique que tu a énoncé ci-dessus et dans mon cas ça ne marchait pas.
il te restait probablement des erreurs
yakou32
Messages postés32Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention 3 avril 2015 17 mars 2009 à 11:22
Bonjour,
Je déterre un petit peu le sujet... J'ai un problème similaire à Chrisotphe, mais je préférerais mettre en oeuvre la solution de Bul3.
J'ai bien rassemblé les éléments dans une fonction, mais néanmoins, les deux traitements ne sont pas lancés l'un après l'autre.
Voici mon code :
function Reload(foo) {
var frame = document.getElementById(foo);
frame.src = frame.src;
}
function Print(foo) {
Reload(foo);
window.frames[foo].focus();
window.frames[foo].print();
}
Il semble que l'impression soit lancée sans attendre que mon iframe ait été mise à jour...
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 17 mars 2009 à 11:42
et ben....
tu lances Reload(foo), et immédiatement ! sans attendre la fin de la fonction donc le chargement de la frame, on continue sur focus() et print !!!!!
probablement avant que la frame soit chargée !!!
function Rel(foo)
{ var frm = document.getElementById(foo);
frm.src = frm.src;
frm.focus();
frm.print();
}
function Prt(foo)
{ Rel(foo); }
par exemple....
mais évite les noms qui resemble par trop à ce que connais le html/javascript....
un jour ou l'autre ça te posera des problèmes ( Reload, Print, frame !!!! )
@+
yakou32
Messages postés32Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention 3 avril 2015 17 mars 2009 à 13:24
:(
Ceci dit, en fait ça ne marche pas, il semble qu'une fonction en appelant une autre avec une série d'instructions les exécute simultanément aussi...
Le contenu est encore imprimé avant d'avoir été mis à jour...
yakou32
Messages postés32Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention 3 avril 2015 17 mars 2009 à 14:25
Et non.. Mon Url est précisément une url dynamique avec des variables d'url... Donc aucune raison que le cache contienne une version erronée de la cible.
Je suis finalement passé par un setTimeout... Après avoir écumé le web une bonne partie de la journée, je n'ai pas trouvé d'autre solution...
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 17 mars 2009 à 14:37
setTimeout dans ce cas n'est possiblement
pas toujours correct ! ( si le délai de
réponse est > temps mis ! )
tester qu'un élément de la page chargée "soit ok"
( une image et .complete ? par exemple ) quitte
à d'abord effacer cette frame
et boucler tant que ce n'est pas le cas
( mais là, avec setTimeout )