J'ai au départ voulu faire quelque chose de similaire a la page de telechargement des drivers de Nvidia http://www.nvidia.com/content/drivers/drivers.asp mais quand j'ai maté le code c'est super chaud !! :shock:
Alors j'ai changé mon fusil d'epaule et j'ai opté pour un systeme de 2 listes deroulantes et je viens de trouver ceci sur le net :
| CODE |
| <html> <head> <meta name="author" value="Biblioscript.com"> <title>Alimenter une liste par une autre liste 2</title> <script language="JavaScript"> // Detection du navigateur nc6 = (typeof(window.controllers) != 'undefined' && typeof(window.locationbar) != 'undefined')? true:false; nc4 = (document.layers)? true:false; ie4 = (document.all)? true:false; // Tableaux des valeurs pour chaque item de la premiere liste // Chaque element est en deux partie : // Le texte, un separateur (£), la valeur var opt_cinema = new Array( 'ET l\'extra-terrestre£et', 'Mission: Impossible£mi', 'Retour vers le futur£retour', 'La fureur du dragon£fureur', 'Indiana Jones£indy', 'Misery£misery', 'James Bond£007' ); var opt_musique = new Array( 'Johnny Halliday£johnny', 'Mireille Matthieu£matthieu', 'Lorie£lorie', 'Garou£garou', 'Aston Villa£astonvilla', 'Bruce Springsteen£springsteen', 'Francis Cabrel£cabrel', 'Lara Fabian£fabian', 'Roch Voisine£roch', 'Patrick Bruel£patriiick' ); var opt_theatre = new Array( 'Boing-boing£boing', 'Le roi Lear£lear', 'Cuisines et dependances£cuisines', 'Voyage au bout de la nuit£voyage' ); // Fonction avec nom du formulaire, de la premiere et de la seconde liste en parametres function populate(form,select1,select2) { // Creation de raccourcis pour manipuler les listes var origine = 'document.' + form + '.' + select1; var resultat = 'document.' + form + '.' + select2; // Si un item est selectionne (sauf le premier, vide) if ( eval(origine + '.options[' + origine + '.selectedIndex]').value != '' ) { // Separation de la valeur de l'item toutes les ',' en 2 elements var contenu = eval(origine + '.options[' + origine + '.selectedIndex]').value.split(","); // Si on trouve un zero, on prendra tous les elements if ( contenu[1] == 0 ) { longueur = eval('opt_' + contenu[0]).length; } // Sinon... else { // on prend le nombre trouve longueur = contenu[1]; } // Effacement de la liste d'arrivee (au cas ou elle contienne deja des elements) eval(resultat).length = 0; // Pour chaque element du tableau voulu for ( i = 0; i < longueur; i++ ) { // Separation tous les '£' pour obtenir les textes et les valeurs var valeur = eval('opt_' + contenu[0])[i].split("£"); // Affectation a la liste d'arrivee eval(resultat).options[i] = new Option(valeur[0], valeur[1]); } // Instruction specifique a Netscape 4.x if (nc4) { // Selection du premier item de la liste d'arrivee eval(resultat).options.selectedIndex = 0; // Rechargement de la page pour voir apparaitre les nouvelles valeurs history.go(0); } } } </script> </head> <body> <form name="formulaire"> <!-- Lancement de la fonction sur changement de la selection --> <p> <select name="listeDepart" OnChange="populate('formulaire','listeDepart','listeArrivee');"> <!-- Chaque option prend pour valeur le nom du tableau d'items voulu et le nombre d'elements a reprendre de la liste --> <option value="">Choisissez...</option> <option value="cinema,0">Cinema</option> <option value="theatre,0">Theatre</option> <option value="musique,0">Musique</option> <option value="musique,2">Petite musique</option> </select> <!-- Liste qui contiendra les nouvelles valeurs --> <select name="listeArrivee"> <option value="">_______________</option> </select> </p> </form> </body> </html> |
J'aurais souhaité ajouter une adresse web a chaque possibilité de la 2eme liste déroulante et lancer une page lors du choix de cette 2eme liste. Ya t'il un moyen pour y parvenir ?
Merci a tous de vos réponses !
Bond007lr