Aide pour javascript
kij_82 Messages postés 4102 Date d'inscription Statut Contributeur Dernière intervention -
voila je dois améliorer une partie d'un site internet et j'ai du mal a comprendre comment fonctionne le code qui permet la creation de mon menu:
function change_mode()
{
ind = document.menu.mode.selectedIndex;
if (document.menu.mode.options[ind].value == 'formulaire')
{ if (document.menu.mode.options[ind].value == 'requete')
{
document.menu.objet.options.length = 0;
var o=new Option('intitulé1','1');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('intitulé2','2');
document.menu.objet.options[document.menu.objet.options.length]=o;
document.menu.action.value = "rechercher";
Ce que je comprend pas c déja comment ca marche et en plus pourkoi mon intitulé 2 si il dépasse une certaine longueur empeche le bon fonctionnement de la fonction change_mode..
Merci d'avance
- Aide pour javascript
- Telecharger javascript pour pc - Télécharger - Langages
- Javascript echo ✓ - Forum PHP
- Javascript arrondi ✓ - Forum Windows
- Afficher un tableau javascript en html ✓ - Forum Javascript
- A javascript error occurred in the main process français - Forum Windows
38 réponses
- 1
- 2
Le code JavaScript change_mode() ajuste les options d'un menu déroulant en fonction du choix 'formulaire', 'table' ou 'requete', avec une logique qui met à jour l'objet et l'action. Plusieurs répondants pointent des tests conditionnels imbriqués qui empêchent d'entrer dans les branches souhaitées, et des méthodes d'ajout d'options qui réinitialisent mal le contenu. D'autres proposent des étapes de débogage simples, notamment afficher les valeurs des menus, tester chaque condition séparément et employer une incrémentation correcte lors de l'ajout des options. En complément, des remarques soulignent que la longueur des intitulés peut perturber le fonctionnement et que simplifier les conditions, vérifier le comportement du bouton et éviter le rechargement de page facilite la résolution.
je ne vois pas trop ou est le pb dans ce que tu as donné, par contre je me pose qq question sur le besoin de mettre tes deux test if :
ind = document.menu.mode.selectedIndex;
if (document.menu.mode.options[ind].value == 'formulaire')
{
if (document.menu.mode.options[ind].value == 'requete')
{
La tu as deux test qui empeche d'entrer dans la suite du code car si ton
document.menu.mode.options[ind].valueest égal à 'formulaire', il ne peut aps vérifier le deuxieme test en étant égal à 'requete'.
Ensuite, dans le code qui suit :
document.menu.objet.options.length = 0;
var o=new Option('intitulé1','1');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('intitulé2','2');
document.menu.objet.options[document.menu.objet.options.length]=o;
document.menu.action.value = "rechercher";
Quelle est l'utilité de mettre au meme endroit (
document.menu.objet.options[document.menu.objet.options.length]=o;) deux fois de suite une valeur différente, à savoir la premiere fois :
var o=new Option('intitulé1','1');
et la deuxieme fois :
var o=new Option('intitulé2','2');
Ou alors il faut écrire de cette facon en incrémentant la taille :
document.menu.objet.options.length = 0;
var o=new Option('intitulé1','1');
document.menu.objet.options[document.menu.objet.options.length++]=o;
var o=new Option('intitulé2','2');
document.menu.objet.options[document.menu.objet.options.length]=o;
document.menu.action.value = "rechercher";
Mais à mon avis pour la première remarque que j'ai fait, l'écécution du script ne passe pas à l'intérieur de tes deux if.
Tu n'a pas autre chose comme code, par exemple celui qui vient apres les deux 'if' justement.
++
Après le if du formulaire ya le meme type de chose que après le if pour requete.
Moi cke je comprend pas c a quoi ca sert de mettre ca:
document.menu.objet.options.length = 0;
var o=new Option('intitulé1','1');
document.menu.objet.options[document.menu.objet.options.length++]=o;
Crée une liste d'option vide
var o=new Option('intitulé1','1');
Créé un objet option (un bouton radio) identifié par la chaine '1' et nommé 'intitulé1'
document.menu.objet.options[document.menu.objet.options.length++]=o;
Insère l'option crée dans le document, puis incrémente sa longueur (le ++) (normal, il y a une option de plus ;o))
Et sinon vous savez pas pourquoi lorsque j'écrit un intitulé trop long pour intitulé2 la concordance entre mes deux listes déroulantes ne se font plus.
Car j'ai 2 listes déroulantes:
1 coté avec formulaire et requete
l'autre coté avec les options correpsondantes.
Quèand je clique sur requete, les options qui y sont associés s'affiche dans l'autre liste
Mais si je rallonge la longuer de mon intitulé ben ce mecanisme ne fonctionne plus
?????
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSinon je vais essayer d'etre plus clair:
j'ai en guise de menu 2 listes déroulantes cote a cote.
La première contient :formulaire,requete,table
Si on selectionne dans la première liste requete le contenu de la deuxième liste change et apparait les options qui correpsondent a la requete.
On peut donc ensuite selectionner intitulé1,intitulé2...Etc
Donc mon problème est que : je me suis rendu compte que si je met un intitulé qui est trop long, lorsque je selectionne requete dans ma 1ere liste la 2emme reste avec les valeurs par defaut......
allez savoir pourkoi????
http://www.quirksmode.org/js/options.html
Je travaille donc sur linux.
Mon code est le suivant:
<script language="Javascript">
function change_mode()
{
ind = document.menu.mode.selectedIndex;
if (document.menu.mode.options[ind].value == 'formulaire')
{
document.menu.objet.options.length = 0;
var o=new Option('Nouvelle séquence','sequences');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Nouvel alignement','alignements');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Nouveau type de sequence', 'types_sequences');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Nouveau primer','primers');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Nouvelle analyse','resultats_analyses');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Nouveau type d\'analyse','types_analyses');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Nouvel organisme','individus');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Nouveau tissu','tissus');
document.menu.objet.options[document.menu.objet.options.length]=o;
document.menu.action.value = "ajouter";
}
if (document.menu.mode.options[ind].value == 'table')
{
document.menu.objet.options.length = 0;
var o=new Option('Les séquences','sequences');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Les alignements','alignements');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Les résultats d alignements','resultats_alignements');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Les differents types de sequences','types_sequences');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Les primers','primers');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Les résultats d analyses','resultats_analyses');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Les differents types d analyses','types_analyses');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Les organismes repertoriés','individus');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Les differents tissus de prélèvement','tissus');
document.menu.objet.options[document.menu.objet.options.length]=o;
document.menu.action.value = "visualiser";
}
if (document.menu.mode.options[ind].value == 'requete')
{
document.menu.objet.options.length = 0;
var o=new Option('Analyses faites pour un gène donné','ana_gene');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('Primer utilisé','pri_type');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('.....2','ana_pri');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('....3','ana_per');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('...4','ana_tech');
document.menu.objet.options[document.menu.objet.options.length]=o;
var o=new Option('..5','pri_ana');
document.menu.objet.options[document.menu.objet.options.length]=o;
document.menu.action.value = "rechercher";
}
return;
}
</script>
<div align="center">
<table width="100%" border="0">
<tr>
<td width="30%">
</td>
<td width="40%">
<div align="center">
<p align="center"><b><u><font face="Comic Sans MS" size="5" color="#3366CC">TITRE</font></u></b></p>
</div>
</td>
<td width="30%">
<div align="center">
</div>
</td>
</tr>
</table>
<hr>
<form method="post" objet="<? echo $PHP_SELF; ?>" name="menu" enctype=multipart/form-data>
<div align="center"><font size="2"><i><font size="2"><b>Menu déroulant</b></font><b><font size="2">::</font></b><font size="2">
sélectionnez ce que vous désirez faire:</font></i></font></div>
<select name="mode" onChange="change_mode();">
<option value="formulaire" selected>Formulaires</option>
<option value="table">Tables</option>
<option value="requete">Requêtes</option>
</select>
<select name="objet">
<option value="sequences">Nouvelle séquence</option>
<option value="alignements">Nouvel alignement</option>
<option value="primers">Nouveau Primer</option>
<option value="resultats_analyses">Nouvelle analyse</option>
<option value="types_sequences">Nouveau type de sequence</option>
<option value="types_analyses">Nouveau type d'analyse</option>
<option value="individus">Nouvel organisme</option>
<option value="tissus">Nouveau tissu</option>
</select>
<INPUT type="hidden" name ="action" value="ajouter">
<INPUT type="hidden" name="num_enr" value="">
<input type="submit" name="Submit" value="OK">
</form>
<hr>
</div>
la ou il y a des ...... c la ou lorsque je met mon texte ca ne fonctionne pas.
Et encore une petite bizarri l'intitulé "analyse faites pour un gène donné" lui peut avoir n'importe quelle taille ca amrche quand meme........
Si vous pouvez m'aider c avec grand plaisir
if(isset($_POST['bidule'])) $bidule = $_POST['bifule']; else $bidule = "";
Et regarde dans les propriété des SELECT, tu as une propriété pour mettre une valeur par défaut à ta liste déroulante. Come ca tu met la valeur récupérée dans $bidule.
- 1
- 2