OVH Cloud OVH Cloud

récupérer une variable créée dans une autre fonction

17 réponses
Avatar
Jibé
Bonjour,

J'ai une fonction httpxmlrequest qui va me chercher une valeur dans une
table. Afin de pouvoir réutiliser le code au maximum je voudrais
détacher ce que je fais du résultat de l'obtention du résultat lui même...
EN gros une fonction qui fait la requête et renvoie le résultat
puis une fonction qui appelle la première et traite le résultat pour
l'afficher.
N'étant pas hyper doué en javascript (mais je progresse...) je m'arrache
les cheveux sur le code suivant:

function trim(str) {
return str.replace(/(^\s*)|(\s*$)/g,"")
}
/* merci ASM */

function cherche(depart,requete,arrivee){
var xhr_object = null;
var x = depart;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.onreadystatechange = function(){
if(xhr_object.readyState == 4 && xhr_object.status == 200){
monresultat = trim(xhr_object.responseText);
}
}
xhr_object.open("POST",requete,true);
xhr_object.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
var data = "id="+x;
xhr_object.send(data);
}

function cherchegauche(depart,requete,arrivee){
if(document.getElementById(arrivee).style.display=='none'){
cherche(depart,requete,arrivee);
alert(monresultat);
document.getElementById(arrivee).innerHTML = monresultat;
document.getElementById(arrivee).style.display='block';

document.getElementById(depart+'_fleche').src='../images/icones/f_open.gif';
}
else

document.getElementById(depart+'_fleche').src='../images/icones/f_close.gif';
document.getElementById(arrivee).style.display='none';
}

Il se passe un truc étrange.
Au premier clic j'ai un magnifique "monresultat is indefined"
au second clic mon alert fonctionne mais rien d'autre ne se passe.

Si vous voyez ou je déc..... merci de m'aider
JiBé

7 réponses

1 2
Avatar
ASM
ça marche pas :(
il continue a me dire que monresultat est undefined !


Voici un dernier essai sur ton principe :
http://cjoint.com/?leoaNcRztu
Mais, à mon idée, ça ne fonctionnera jamais.

Voici une variante qui, cette fois, j'espère fonctionnera :
http://cjoint.com/data/leoc4Y50zV.htm
et peut-être y verra-t-on où ça bloque ?
(qques fois que ce soit le PHP ?)


C'est joint m'a vérolé tous les accents :-(
--
ASM

Avatar
ASM
C'est joint m'a vérolé tous les accents :-(


cette fois sur mon navigteur les accents sont respectés :

http://cjoint.com/data/lepsNCGFbc_jibe_1.js

http://cjoint.com/data/leptVeFDOr_jibe_2.js

Avatar
JiBé
C'est joint m'a vérolé tous les accents :-(


cette fois sur mon navigteur les accents sont respectés :

http://cjoint.com/data/lepsNCGFbc_jibe_1.js

http://cjoint.com/data/leptVeFDOr_jibe_2.js
Merci beaucoup à vous.

Je n'ai pas bossé aujourd'hui (premier weekend depuis septembre) donc je
ne trouve votre message que maintenant.
Je regarde ça dés demain.
Encore merci

JiBé


Avatar
Jibé

Voici un dernier essai sur ton principe :
http://cjoint.com/?leoaNcRztu
Mais, à mon idée, ça ne fonctionnera jamais.
Effectivement ça ne marche pas selon ma formule....

Je ne comprends pas trop pourquoi mais je pense que je vais laisser
tomber car....

Voici une variante qui, cette fois, j'espère fonctionnera :
http://cjoint.com/data/leoc4Y50zV.htm
et peut-être y verra-t-on où ça bloque ?
Celle là fonctionne!!! enfin dans 4 cas sur 5 sans que pour le moment je

ne puisse comprendre pourquoi. Je vais chercher et trouver.
(qques fois que ce soit le PHP ?)
Non ça j'avais vérifié en premier que mon script (coldfusion en

l'occurence) fonctionnait correctement. Je me suis trop fait avoir avec
ça sur un autre projet... ;) depuis je commence par tester mon script.


C'est joint m'a vérolé tous les accents :-(


Merci beaucoup à vous (une fois de plus)

JiBé

Avatar
Roger (Bordeaux)
Bonjour à tous,

J'ai un formulaire comprenant un tableau de champs input.

Je souhaite que les touches du clavier répondent de façon particulière :

- TAB : Champ suivant (comportement normal rien à faire)
- ENTER : Idem que TAB
- ESCAPE : La valeur initiale du champ courant est réaffichée dans le
champ à la place de celle éventuellement modifiée.

J'ai essayé de définir onKeyPress mais l'attribut value ne semble pas
modifiable.

Avez vous une idée pour une solution.

Merci d'avance

Roger
Avatar
ASM
Je souhaite que les touches du clavier répondent de façon particulière :

- TAB : Champ suivant (comportement normal rien à faire)
- ENTER : Idem que TAB


http://stephane.moriaux.perso.orange.fr/truc/key_enter_tab.htm

- ESCAPE : La valeur initiale du champ courant est réaffichée dans le
champ à la place de celle éventuellement modifiée.


Le blème est que tout le monde (Mac, Win, IE, NC ...) ne renvoie pas le
même code, du moins, à ce que je crois.

Mieux vaudrait une association de touche
(Alt + Enter ou Backspace par exemple)
http://stephane.moriaux.perso.orange.fr/truc/key_code

J'ai essayé de définir onKeyPress mais l'attribut value ne semble pas
modifiable.


Tien ? ce serait nouveau.

<form>
<input value="123"
onkeydown="if(typeof(this.val)=='undefined')this.val=this.value;"
onchange="this.value = this.val">
<input value="456"
onkeydown="if(typeof(this.val)=='undefined')this.val=this.value;"
onchange="this.value = this.val">
</form>

Avez vous une idée pour une solution.


On a *toujours* une idée pour une solution :-)
(reste à voir si c'est réaliste)

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Stephane Moriaux and his (less) old Mac already out of date
Contact : http://stephane.moriaux.perso.wanadoo.fr/contact
ASM = Aimable Stéphane Moriaux = Amateur Sasseur Merdouilles

Avatar
Roger (Bordeaux)
- ENTER : Idem que TAB


http://stephane.moriaux.perso.orange.fr/truc/key_enter_tab.htm

Merci pour le tuyau pour cette solution.



Tien ? ce serait nouveau.

<form>
<input value="123"
onkeydown="if(typeof(this.val)=='undefined')this.val=this.value;"
onchange="this.value = this.val">
<input value="456"
onkeydown="if(typeof(this.val)=='undefined')this.val=this.value;"
onchange="this.value = this.val">
</form>



Par contre ceci montre bien le pb que l'exposai.

<form>
<input value="123"
onkeypress="if(event.keyCode=')this.value=this.oldValue;"
onfocus="this.oldValue = this.value"

<input value="456"

onkeydown="if(event.keyCode=')this.value=this.oldValue;"
onfocus="this.oldValue = this.value"

<input value="789"

onkeyup="if(event.keyCode=')this.value=this.oldValue;"
onfocus="this.oldValue = this.value"

</form>


Escape sur le 3ème champ fonctionne mais pas sur les 2 premiers.


1 2