La communauté ALL HTML c'est 60442 membres à ce jour dont 0 inscrits aujourd'hui et 5 depuis une semaine.

  • imprimer
  • aide

Forum de discussions « Javascript - DHTML - VBScript »

Retrouvez les publications relatives à ces discussions dans notre rubrique javascript.

Récupération d'objets créés dans une fonction

liste des forums liste des discussions Participer à la discussion

Photo de philou15 Message publié le lundi 01 février 2010 à 11 h 31 par philou15. philou
Bonjour,
J'ai un pb de passage et récupération de mon objet.
la variable "photos" est un tableau.
je ne connais pas le nombre d'élément du tableau tant que je n'ai pas récupéré les champs du fichier xml, ce qui est fait dans la fonction "recup_fichier_photo", (je déclare chaque élément du tableau comme un objet de type "Photo" dans la fonction).

Comment faire pour récupérer les objets créés dans la fonction ?

script éxécutable à l'adresse :
http://www.observatoiredeleau.fr/Essai/essai.htm
code ci-dessous.

Merci d'avance
Philou


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Fiche descriptive</title>

<script type="text/javascript">

//constructeur de la classe photos
function Photo(plat,plong) {
this.lat = plat;
this.long = plong;}

var photos = new Array ();

function recup_fichier_photo(fichier,photos) {
// Récupération des données stations (lattitude, longitude) à partir du fichier xml
var request = GXmlHttp.create();
request.open("GET",fichier, true);
request.onreadystatechange = function() {
// si les data ont été chargées, le readystate passe à 4
if (request.readyState == 4) {
var xmlDoc = request.responseXML;
var markers = xmlDoc.documentElement.getElementsByTagName("marker");

for (k = 0; k < markers.length; k++) {
photos[k] = new Photo();
photos[k].lat = parseFloat(markers[k].getAttribute("lat"));
photos[k].long = parseFloat(markers[k].getAttribute("long"));
}}}
request.send(null);
return photos;}
</script>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAyR-IKou_PgJHyL0q9fVNLxTgVOmF-uHHogn7BifuCrL_l0gHXRSZYwWhLi6hIzHeHQshYghIzJI8nA"
type="text/javascript">
</script>
</head>

<body bgcolor="#FFFFFF" onload="Javascript:recup_fichier_photo('essai.xml',photos);alert(photos[0].lat)">
</body>
</html>
Photo de nours312 Message publié le lundi 01 février 2010 à 14 h 59 par nours312. nours312.com
déja :

for (k = 0; k < markers.length; k++) { photos[k] = new Photo(parseFloat(markers[k].getAttribute("lat")), parseFloat(markers[k].getAttribute("long"))); }}}

ensuite en fin de fonction, tu renvoi ton tableau :: return photos;} ... donc je ne vois pas ce que tu cherches à faire ... mais ceci peux etre une piste :

<body bgcolor="#FFFFFF" onload="Javascript:var ArrayPhotos = recup_fichier_photo('essai.xml',photos);alert(photos[0].lat)">

ensuite, tu peux utiliser ArrayPhotos ..

Expliques mieux ce que tu cherches à faire stp ;)
Photo de nours312 Message publié le lundi 01 février 2010 à 15 h 07 par nours312. nours312.com
/* Nota : Macromédia n'existe plus ... elle a été dévorée par Adobe il y a fort fort longtemps !... et la version 5 de Flash ... plus personne n'en manque :D */
Photo de philou15 Message publié le mercredi 03 février 2010 à 10 h 23 par philou15. philou
J'ai résolu mon problème de synchronisation en insérant dans la fonction load une fonction effectuant mon traitement (définition dynamique du contenu de mes sélecteurs à partir des tableaux initialisés avec les données du fichier xml).
Sinon le traitement asynchrone, provoquait l'obtention de valeur "undefined".

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions