Rechercher : dans
Par :

Javascript : 'Erreur : Objet Requis'

Dernière réponse le 21 nov 2008 à 09:27:22 Melkor, le 7 nov 2008 à 14:42:01 
 Signaler ce message aux modérateurs

Bonjour,

Je suis en train de taffer sur un projet en partie réalisée avec AJAX et XML, et je me retrouve bloqué sur un problème d'objet requis :/

Mon code marche parfaitement sous FF (normal, comme d'hab) mais IE fait chier (encore une fois , comme d'hab).

Je vous colle en dessous ma fonction qui plante :

/** fonction pour l'affichage de la carte région agrandie en plein ecran **/
function afficherCarteFullscreen(pays, region, saison)
{
	opacityOn();
	
	getId('cartes_fullscreen').style.display = 'block';
	getId('cartes_fullscreen').innerHTML = '<img id="loading" src="site/media/descriptifs/loading_bar.gif" alt="" title="" />';
	
	var data = 'pays=' + pays + '&region=' + region + '&saison=' + saison;
	
	xhr = createRequestObject();
	
	xhr.onreadystatechange = function ()
	{
		if(xhr.readyState == 4)
		{
			if (xhr.status == 200)
			{
				var docXML = xhr.responseXML; //Objet permettant de gérer le xml généré dans le script PHP
				
				stations = docXML.getElementsByTagName('station');
				var html = docXML.getElementsByTagName('template');
				getId('cartes_fullscreen').innerHTML = html[0].firstChild.nodeValue;
				
				getId('img_grande_carte').src = 'site/media/cartes/' + pays + '/' + region + '/generale.png';
				
				// on assigne des margin aux images/points représentant les stations; on les positionne
				for(var i = 0; i < stations.length; i++)
				{
					getId('station_' + stations[i].getAttribute('code')).style.margin = stations[i].getElementsByTagName('coordonnee_y')[0].firstChild.nodeValue + 'px 0px 0px ' + stations[i].getElementsByTagName('coordonnee_x')[0].firstChild.nodeValue + 'px';
				}
			}
			else alert(xhr.status + " " + xhr.statusText);
		}
	};
	
	xhr.open("POST", "site/includes/cartes/ajax_cartes_fullscreen.php", true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send(data);
}


Au moment ou j'exécute la fonction, j'ai une erreur, et mon code semble bloquer au moment ou il passe sur cette ligne : getId('cartes_fullscreen').innerHTML = html[0].firstChild.nodeValue;

Si quelqu'un sait de quoi il en retourne...

En espérant avoir été clair, et dans l'attente de réponses ^^, merci d'avance.

Baptiste
Configuration: Windows XP Pro
Firefox 3.0.3 / Internet Explozer 6/7

Meilleures réponses pour « Javascript : 'Erreur : Objet Requis' » dans :
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...
Javascript - L'objet Date VoirLes particularités de l'objet Date L'objet Date permet de travailler avec toutes les variables qui concernent les dates et la gestion du temps. Il s'agit d'un objet inclus de façon native dans Javascript, et que l'on peut toujours utiliser. La...
Javascript - L'objet window VoirLes particularités de l'objet window L'objet window est l'objet par excellence dans Javascript, car il est le parent de chaque objet qui compose la page web, il contient donc : l'objet document: la page en elle-même l'objet location: le lieu de...

1

Melkor, le 17 nov 2008 à 12:09:27

Up ???

Répondre à Melkor

2

Marco la baraque, le 17 nov 2008 à 20:34:32

Bonsoir Melkor,
J'ai juste une question :
html[0].firstChild.nodeValue : pourquoi n'utilises-tu pas un identifiant pour récupérer ton élément, vu qu'il est fixe? Ca t'éviterait d'avoir des problèmes de compatibilité comme celui-là.

Cordialement, rtfm and jfgi

Répondre à Marco la baraque

3

Melkor, le 19 nov 2008 à 09:43:12

Bonjour,

Je débute tout juste dans le parsage de XML, j'ai donc utilisé ce que j'ai trouvé par ci par la.
Pourrais-tu m'expliquer plus en détail ta façon de voir la chose s'il te plais ? Je ne sais pas comment appeler un noeur d'après un ID...

Merci pour ta réponse, bonne journée.
Baptiste

Répondre à Melkor

4

Alain_42, le 19 nov 2008 à 10:53:27

Salut,

en JS pour atteindre un element par son id:

var obj=document.getElementById('id_a_atteindre');

//et après tu manipules cet obj comme tu veux avec ses propriétés et methodes propres

ex:

obj.value
obj.style

Répondre à Alain_42

5

Melkor, le 20 nov 2008 à 12:01:45

Salut,

Merci pour tes précisions Alain, mais ça je connais déjà. C'est surtout a propos du XML que je suis pas dans mon élément. Je n'ai pas vraiment compris ce que Marco a voulu me dire, on peut mettre des id à nos balises XML ??

Bonne journée

Répondre à Melkor

6

Marco la baraque, le 20 nov 2008 à 14:22:02

Bonjour,
Quand tu fais ceci :

...
var html = docXML.getElementsByTagName('template');
getId('cartes_fullscreen').innerHTML = html[0].firstChild.nodeValue;
...

Tu récupères toujours le même objet (le premier noeud 'template' de ta réponse).
Autrement dit, si ton XML ressemble à un truc comme ça, tu récupères le tag en gras :
<?xml version="1.0" encoding="ISO-8859-1"?> 
<root> 
  <station>blabla</station>
  <template>...</template>
  <template>...</template>
  <template>...</template>
</root>


Ma question était donc : vu que tu récupères toujours le même élément (le premier tag template), pourquoi n'utilises-tu pas un identifiant :
<?xml version="1.0" encoding="ISO-8859-1"?> 
<root> 
  <station>blabla</station>
  <template id="firstTemplate">...</template>
  <template>...</template>
  <template>...</template>
</root>

Dans ton javascript tu aurais donc quelque chose du genre :
...
getId('cartes_fullscreen').innerHTML = docXml.getElementById('firstTemplate').value;
...


Cordialement, rtfm and jfgi

Répondre à Marco la baraque

7

 Melkor, le 21 nov 2008 à 09:27:22

OK, bah merci pour ces explications Marco.
Je ne sais pas pourquoi j'avais pas pensé a utiliser des ID pour le XML, mais effectivement si c'est autorisé ça simplifie quand même pas mal la vie ^^ !

Bonne journée
Baptiste

Répondre à Melkor