Javascript et mozilla/firefox
Résolu
JB_A
Messages postés
301
Date d'inscription
Statut
Membre
Dernière intervention
-
JB_A Messages postés 301 Date d'inscription Statut Membre Dernière intervention -
JB_A Messages postés 301 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Javascript et mozilla/firefox
- Mozilla firefox - Télécharger - Navigateurs
- Downloadhelper mozilla - Télécharger - Outils pour navigateurs
- Exporter favoris firefox - Guide
- Mozilla thunderbird - Télécharger - Mail
- Telecharger javascript - Télécharger - Langages
22 réponses
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>
Exact
Où encore
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')
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')
Merci de ta réponse,
Je viens d'essayer mais cela donne la même chose.
Cela fonctionne sous IE mais pas sous firefox.
Je viens d'essayer mais cela donne la même chose.
Cela fonctionne sous IE mais pas sous firefox.
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
Charge ta page sous FF test ton select puis va dans [Outils] [Console d'erreurs] : FF doit t'afficher ce qui ne va pas
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
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 :
C'est comme si il n'arrivait plus à associer userid avec $userid mais dès que je remets '+userid.value+', tout refonctionne sous IE.
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.
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
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
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:
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
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
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 : </b></span> <select name="userid" onChange="document.location.reload('/config_individus.php? userid='+document.getElementById('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
tu met if ($userid!="") {
mais cette variable n'est pas définie avant ...
de plus quand tu met config_individus.php?userid=
ça correspond a la varialbe $_GET[userid'] et je ne te voit pas l'utiliser
mais cette variable n'est pas définie avant ...
de plus quand tu met config_individus.php?userid=
ça correspond a la varialbe $_GET[userid'] et je ne te voit pas l'utiliser
Oui
En plus il manque .value après document.getElementById('userid')
Et l'espace à la fin n'est pas utile
Tu utilises quelle version de php ?
En plus il manque .value après document.getElementById('userid')
Et l'espace à la fin n'est pas utile
Tu utilises quelle version de php ?
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
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:
Alors que si j'affiche la source, il y a bien
$_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+'');">
et en mettant comme j'ai mis plus haut avec this ?
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
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
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é.
et l'utilisateur n'est plus sélectionné.
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...
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...
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é.
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é.
Ce qui est marrant c'est qu'il comprend bien $userid parce que grace à
Il sélectionne bien le bon utilisateur mais si je fais un <? echo $userid ?>, il n'affiche rien
<? if ($row[0]==$userid) {?>SELECTED<? } ?>>
Il sélectionne bien le bon utilisateur mais si je fais un <? echo $userid ?>, il n'affiche rien
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.
toujours pas. C'est comme s'il ne transmettait pas la valeur de userid.
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 :
Par contre avec Firefox, j'obtiens :
J'ai vérifié mon code et j'ai bien inséré en plus :
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 :
Et la, cela marche sans problème que ce soit sous IE ou sous Firefox.
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.