Liste déroulante fonctionne sous Mozilla pas IE...

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Loulipo
Arias
Messages : 3
Inscription : 07 oct. 2005, 11:47

Liste déroulante fonctionne sous Mozilla pas IE...

Message par Loulipo »

...enfin pas vraiment le site en entier mais une partie. Il s'agit d'une liste déroulante avec sous liste déroulante (tout cela fonctionne avec du PHP et base de donnée MYSql). Sous Mozilla, tout s'ouvre sans problème et sous IE impossible de dérouler la sous liste. Du coup étant donné qu'il s'agit d'un formulaire il est impossible de le valider puisque ce champ n'a pas été renseigné... Ce n'est pas moi qui ai crée tout ca mais j'ai trouvé un petit quelque chose comme ca : (il va de soi que j'ny comprend rien mais etant donné que j'ai vu IE je me suis dit que c'était peut-être là que se trouvait le problème...). Merci d'avance si vous avez une idée...

Code : Tout sélectionner

	// Compilation conditionnelle d'IE
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
	@end @*/

	// on essaie de créer l'objet si ce n'est pas déjà fait
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}

	if (xmlhttp) {
	  // on définit ce qui doit se passer quand la page répondra
	  xmlhttp.onreadystatechange = function() {
	    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
	      // Traitement de la réponse.
	      tableauResultats = xmlhttp.responseText.split("|");
	      document.getElementsByName(cible)[0].innerHTML = "";
	      for ( i in tableauResultats ) {
		// on regarde si il faut ajouter l'attribut selected au chargement de la page
		if ( event == 'onLoad' && tableauResultats[i] == '<?= $sousTheme ?>')
			elem = new Option(tableauResultats[i],tableauResultats[i],false,true);
		else elem = new Option(tableauResultats[i],tableauResultats[i],false,false);
		document.getElementsByName(cible)[0].appendChild(elem);
		if (tableauResultats.length > 2) document.getElementsByName(cible)[0].style.display="";
		else document.getElementsByName(cible)[0].style.display="none";
	      }
	    }
	  }
	}
Édition modérateur : merci d'utiliser les balises pour rendre votre code lisible.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Il me semble que ceci (pour parcourir un tableau) est du JavaScript 1.6 et n'est donc peut-être pas compris par IE :

Code : Tout sélectionner

for ( i in tableauResultats ) { 
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Loulipo
Arias
Messages : 3
Inscription : 07 oct. 2005, 11:47

Message par Loulipo »

Ah voui forcemment ca serait plutot embetant... Du coup j'serais complètement bloquée alors... J'ai essayé des scripts sencés rendre le code javascript compatible pour tout navigateurs mais a pas marché...
Loulipo
Arias
Messages : 3
Inscription : 07 oct. 2005, 11:47

Message par Loulipo »

J'ai testé la liste avec tout plein de navigateurs différents... Avec tous ma liste déroulante fonctionne...sauf IE...c'est quand même dingue...
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Tu as essayé d'utiliser une boucle plus classique (avec un compteur) ?

Sinon un

Code : Tout sélectionner

alert(xmlhttp.responseText)
juste avant "traitement de la réponse" donne quoi sous IE ? Tu reçois bien la réponse ou c'est avant ça déjà que ça foire ?
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Kicoco et 1 invité