Javascript et mozilla/firefox

Résolu/Fermé
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 - 25 juil. 2008 à 14:44
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 - 28 juil. 2008 à 15:29
Bonjour,

J'ai une page dans laquelle, j'utilise un javascript qui fonctionne parfaitement sous IE mais dès que je le teste sur Firefox, il ne fonctionne plus.

<select name="userid" onChange="document.location.reload('mapage.php?userid='+userid.value+'');">
		<option value="0">-- Sélectionner un utilisateur --</option>
		<option value="1" >Utilisateur 1</option>
		<option value="2" >Utilisateur 2</option>
		<option value="3" >Utilisateur 3</option>
		<option value="4" >Utilisateur 4</option>
</select>


Lorsque je le teste, cela n'a pas l'air de fonctionner sous firefox.

Merci pour votre aide
A voir également:

22 réponses

nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
25 juil. 2008 à 14:55
ne serait-ce pas mieux comme ça ?

<select name="userid" onChange="document.location='test.php?userid='+this.value;">
		<option value="0">-- Sélectionner un utilisateur --</option>
		<option value="1" >Utilisateur 1</option>
		<option value="2" >Utilisateur 2</option>
		<option value="3" >Utilisateur 3</option>
		<option value="4" >Utilisateur 4</option>
</select>
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
25 juil. 2008 à 15:02
Exact

Où encore


<select name="userid" id="userid" onChange="alert('mapage.php?userid='+document.getElementById('userid').value);">
		<option value="0">-- Sélectionner un utilisateur --</option>
		<option value="1" >Utilisateur 1</option>
		<option value="2" >Utilisateur 2</option>
		<option value="3" >Utilisateur 3</option>
		<option value="4" >Utilisateur 4</option>
</select>



lorsque tu cherches à reférencer un élément en Javascript ne te base pas sur l'attribut name
A la place donne un identifiant unique via l'attribut id (ex id="userid").
Ensuite pour récupérer une référence sur cet élément en JS il suffit de faire
document.getElementById("nom_de_l_element") ex document.getElementById('userid')
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
25 juil. 2008 à 15:04
Merci de ta réponse,

Je viens d'essayer mais cela donne la même chose.

Cela fonctionne sous IE mais pas sous firefox.
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
25 juil. 2008 à 15:10
Tu dois avoir commis une erreur car les 2 méthodes sont parfaitement valables surtout que celle de nEm3sis est simple elle fonctionne chez moi. La seule difficulté ici étant de bien comprendre ce que représente this :-)

Charge ta page sous FF test ton select puis va dans [Outils] [Console d'erreurs] : FF doit t'afficher ce qui ne va pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
25 juil. 2008 à 15:12
il y a un bug quand je fais copier coller les 2 codes
sur le mieu un tiret (-) vien se mettre au milieu de value
et sur celui de PHP le tiret (-) vient se mettre au mileu de getElementById

si ton problème est le meme que le mien suffit de supprimer ce tiret et ça marche
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
25 juil. 2008 à 15:15
Ah oui c'est vrai ! depuis quelques temps le forum prend certaines libertés avec les codes en introduisant des caractères fantaisistes ! Avis au webmaster
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
25 juil. 2008 à 15:27
En fait,

Ce n'est pas un problème de copier/coller puisque cela marche en partie. Lorsque je change l'utilisateur, avec getElementByid sur IE comme sur Firefox, il affiche bien la bonne ligne mais il semble qu'il n'arrive plus à comprendre :

 if ($userid!="") {


C'est comme si il n'arrivait plus à associer userid avec $userid mais dès que je remets '+userid.value+', tout refonctionne sous IE.
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
25 juil. 2008 à 15:31
C'est un autre problème là ...

Donne le code complet de ta page

0
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
25 juil. 2008 à 15:32
tu pourrais montrer ton code ?
parce que userid c'est du html/javascript et $userid c'est du php
et tu ne dis pas comme tu passe de l'un a l'autre
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
25 juil. 2008 à 15:36
Ouais c'est pas faux ! ;-)
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
25 juil. 2008 à 15:51
Ouais OK, je vous le mets en intégral

J'ai une page en php qui m'affiche la conf par individus (genre de cartographie)

en entête, j'ai 2 SQL:


// recuperation de la liste des individus pour l'afficher dans la liste déroulante
$sSQL="SELECT fjs_inus_id, fjs_inus_nom, fjs_inus_prenom FROM tjs_internal_user WHERE 
fjs_inus_actif='1' AND fjs_inus_nom <> 'Generique' ORDER BY fjs_inus_nom, fjs_inus_prenom";
$q->query($DB,$sSQL);


if ($userid!="") {

// récupération du matériel de niveau N et affichage de celui-ci
$sSQL1="SELECT fjs_ci_id, fjs_citype_libelle, fjs_citype_img, fjs_ci_libelle, fjs_ci_societe, fjs_ciexploit_libelle,
 fjs_ci_description, fjs_ci_serialnumb, fjs_ci_adresseip, fjs_ci_datereception FROM tjs_ci, tjs_ci_type,
 tjs_ci_owner, tjs_ci_exploit WHERE fjs_ci_userid='$userid' AND fjs_ci_ownerid=fjs_ciowner_id 
AND fjs_ci_stateid <= '4' AND fjs_ciexploit_id=fjs_ci_version 
AND fjs_citype_id=fjs_ci_type AND fjs_ci_id=fjs_ci_parent AND 
fjs_citype_id <> 'Consommable' ORDER BY fjs_citype_libelle DESC";
$q->query($DB,$sSQL1);
$row=$q->getrow();
$ciid=$row[0];
}


Dans le corps du message, j'ai ma liste déroulante et lorsque je clique sur le nom d'une personne, la conf s'affiche en dessous

<form name="user">
<? $q->query($DB,$sSQL); ?>

<span class="titre2"><b>Voir la configuration de :&nbsp;&nbsp;&nbsp;</b></span>

<select name="userid" onChange="document.location.reload('/config_individus.php?
userid='+document.getElemen­tById('userid')+' ');">
<option value="0">-- Sélectionner un utilisateur --</option>
<? if ($q->numrows()) {
	$row=$q->getrow();
		while ($row) { ?>
<option value="<? echo $row[0] ?>" <? if ($row[0]==$userid) {?>SELECTED<? } ?>>
<? echo $row[2] ?> <? echo $row[1] ?></option>
		<? $row=$q->getrow();
			}
		} ?>
	</select>
</form>
</div>


Eh bien voila, avec '+userid.value+', cela marche sans problème sous IE et pas sous Firefox. Avec "document." ou "user." cela ne fonctionne pas sur les 2 navigateurs pourtant, il sélectionne la bonne ligne.

Merci de votre aide
0
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
25 juil. 2008 à 16:02
tu met if ($userid!="") {
mais cette variable n'est pas définie avant ...

de plus quand tu met config_individus.p­hp?userid=
ça correspond a la varialbe $_GET[userid'] et je ne te voit pas l'utiliser
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
25 juil. 2008 à 16:05
Oui

En plus il manque .value après document.getElemen­tById('userid')
Et l'espace à la fin n'est pas utile



Tu utilises quelle version de php ?
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
25 juil. 2008 à 16:51
Pour la définition des variables, cela se trouve dans le fichier de conf qui est en include mais que je n'ai pas intégré au code placé ici. Cela fonctionne très bien sur IE pour tous le site et si je rajoute
$_GET['userid'];

dans la page cela ne fonctionne pas mieux.

Avec value en plus, cela refonctionne sous IE mais cela me sort un message d'erreur suivant sous Firefox:

Erreur : document.getElementById("userid") has no properties
Fichier source : http://localhost/support/config/config_individus.php
Ligne : 1


Alors que si j'affiche la source, il y a bien

<select name="userid" onChange="document.location.reload('/support/config/config_individus.php?
userid='+document.getElementById('userid').value+'');">
0
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
25 juil. 2008 à 17:02
et en mettant comme j'ai mis plus haut avec this ?
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
25 juil. 2008 à 17:13
On revient en arrière, la ligne de l'utilisateur n'est même pas sélectionné.
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606 > JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018
25 juil. 2008 à 17:39
je me demande bien pourquoi j'écris ! lol
qu'est-ce que j'ai écrit à propos de getElementById() ? que comme son nom l'indique ça recherche un élément par son ID dans la page HTML : donc dans ta balise <select ....> tu dois ajouter en plus l'attribut id="userid"

Ex <select name="userid" id="userid" ...> Ca fonctionne sous IE car il utilise l'attribut name lorsque id n'est pas défini

0
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113 > JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018
25 juil. 2008 à 19:08
sauf que si c'est pas sélectionné c'est pas a cause du this comme j'ai mis dans le code plus haut c'est a cause de ton code php
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5 > nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012
25 juil. 2008 à 19:28
$_Get, voir ticket 14 et pour $userid, c'est normal qu'il n'est pas défini avant puisque la page est sensée se recharger avec une valeur à userid, correspondant à l'identifiant de l'utilisateur.
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
25 juil. 2008 à 17:57
Si je rajoute id="userid", je n'ai plus le message d'erreur mais rien de plus ne se passe
et l'utilisateur n'est plus sélectionné.
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
25 juil. 2008 à 18:05
Je viens de trouver ca sur le site de mozilla :

Il ne suffit pas de créer un élément et de lui assigner un ID pour le rendre accessible par getElementById. Pour cela, il est nécessaire d'insérer l'élément dans l'arbre du document avec insertBefore ou une méthode similaire, par exemple dans un élément DIV invisible.

var element = document.createElement("div");
element.id = 'testqq';
var el = document.getElementById('testqq'); // e vaudra null !


Mais je ne comprend pas tout...
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
25 juil. 2008 à 18:34
Non ça c'est lorsque tu manipules l'arbre DOM (la page HTML une fois chargée en mémoire par le navigateur constitue un arbre assez complexe qui contient tous les éléments de la page : chaque élément est en fait un objet) dynamiquement c'est-à-dire quand tu ajoutes par ex par programmation en Javascript des éléments qui n'ont pas été définie explicitement dans le code HTML au départ.
A la limite tu pourrais avoir une page complètement vide et tout créer par programmation : ce que personne ne fait bien sûr car c'est bcp trop compliqué.

0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
25 juil. 2008 à 19:41
Ce qui est marrant c'est qu'il comprend bien $userid parce que grace à
<? if ($row[0]==$userid) {?>SELECTED<? } ?>>

Il sélectionne bien le bon utilisateur mais si je fais un <? echo $userid ?>, il n'affiche rien
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
25 juil. 2008 à 21:18
C'est normal, il ne rechargeait pas la page. Mais même lors du rechargement, <? echo $userid ?> ne s'affiche
toujours pas. C'est comme s'il ne transmettait pas la valeur de userid.
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
25 juil. 2008 à 22:45
Pour voir le contenu des variables reçues par php insère ce code dans ta balise <body> :

<?php
echo "<pre>";
var_dump($_GET);
echo "</pre>";
?>



Ceci te permettra de déboguer un peu plus facilement


0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
26 juil. 2008 à 18:14
Merci pour ton code pour debugger.

Lorsque je l'insére dans la page, que je la charge avec IE et que je sélectionne un utilisateur, cela donne :

array(1) {
  ["userid"]=>
  string(2) "82"
}


Par contre avec Firefox, j'obtiens :

array(0) {
}


J'ai vérifié mon code et j'ai bien inséré en plus :
$userid=$_GET[userid];


Mais cela ne change rien, j'ai même essayé avec $_POST au lieu de $_GET, j'ai bien vérifié que la "method" du formulaire était bien adaptée (soit get soit post).

La solution pourrait peut-être d'au lieu de recharger la page (Load) avec un onChange, il faudrait peut-être
envoyer les données avec un submit.

C'est pourquoi, je l'ai changé en :

onChange="document.utilisateur.submit();"


Et la, cela marche sans problème que ce soit sous IE ou sous Firefox.
0