OVH Cloud OVH Cloud

selection feuille style et combo

31 réponses
Avatar
nico
salut,


j'aimerai créer une liste <select> proposant à l'utilisateur divers
choix de thème css pour l'affichage d'un site web. Le choix se fait
uniquement sur la page d'accueil, puis est mémorisé via cookie sur le
disque dur utilisateur.

Ainsi, sur chaque page une petite vérification du cookie permet
l'affichage du style demandé.

cependant ceci m'amène à quelques inconvénients que je ne parviens pas
à résoudre.


1) La fonction chargée de vérifier le cookie est appelée sur un
évènement onLoad de la balise <body> de mon document html, et à chaque
chargement de la page, je vois pendant un temps très bref le style par
défaut... j'aimerai que le style choisi par l'utilisateur (donc celui
enregistré dans le cookie) soit affiché dès le début, existe-t-il un
moyen de faire ça ?


2) lorsque l'utilisateur choisi un thème via le <select> et qu'il
change de page, pour enfin revenir sur la page où se trouve le select,
celui ci réaffiche l'item par défaut, et non celui sélectionné par ses
soins (i.e. celui correspondant au thème affiché), je n'ai pas trouvé
le moyen en javascript de choisir l'item affiché dans un select...
est-ce possible ?


tout ceci m'apporte a croire que ce que je veux faire n'est pas
possible en javascript ? vrai ? faux ?


je vous remercie d'avance de votre aide.

bon surf
a+

--
nico
http://nicolas.aunai.free.fr

10 réponses

1 2 3 4
Avatar
nico
salut,


j'aimerai créer une liste <select> proposant à l'utilisateur divers choix de
thème css pour l'affichage d'un site web. Le choix se fait uniquement sur la
page d'accueil, puis est mémorisé via cookie sur le disque dur utilisateur.

Ainsi, sur chaque page une petite vérification du cookie permet l'affichage
du style demandé.

cependant ceci m'amène à quelques inconvénients que je ne parviens pas à
résoudre.


1) La fonction chargée de vérifier le cookie est appelée sur un évènement
onLoad de la balise <body> de mon document html, et à chaque chargement de la
page, je vois pendant un temps très bref le style par défaut... j'aimerai que
le style choisi par l'utilisateur (donc celui enregistré dans le cookie) soit
affiché dès le début, existe-t-il un moyen de faire ça ?


2) lorsque l'utilisateur choisi un thème via le <select> et qu'il change de
page, pour enfin revenir sur la page où se trouve le select, celui ci
réaffiche l'item par défaut, et non celui sélectionné par ses soins (i.e.
celui correspondant au thème affiché), je n'ai pas trouvé le moyen en
javascript de choisir l'item affiché dans un select... est-ce possible ?


tout ceci m'apporte a croire que ce que je veux faire n'est pas possible en
javascript ? vrai ? faux ?


je vous remercie d'avance de votre aide.

bon surf
a+






pour résumer j'aimerai faire comme sur ce site :
http://openweb.eu.org/
et pour le moment j'ai :

http://nicolas.aunai.free.fr

--
nico
http://nicolas.aunai.free.fr

Avatar
Thibaut Allender
1) La fonction chargée de vérifier le cookie est appelée sur un
évènement onLoad de la balise <body> de mon document html, et à chaque
chargement de la page, je vois pendant un temps très bref le style par
défaut... j'aimerai que le style choisi par l'utilisateur (donc celui
enregistré dans le cookie) soit affiché dès le début, existe-t-il un
moyen de faire ça ?


avec un script externe appelé dans le <head>, ca ne fonctionne pas mieux ?

2) lorsque l'utilisateur choisi un thème via le <select> et qu'il change
de page, pour enfin revenir sur la page où se trouve le select, celui ci
réaffiche l'item par défaut, et non celui sélectionné par ses soins
(i.e. celui correspondant au thème affiché), je n'ai pas trouvé le moyen
en javascript de choisir l'item affiché dans un select... est-ce possible ?


oui, avec ceci par exemple :
document.getElementById('id_du_select').selelecedIndex = 'value';

tout ceci m'apporte a croire que ce que je veux faire n'est pas possible
en javascript ? vrai ? faux ?


faut voir, mais c'est vrai qu'une gestion du cookie côté serveur sera
"plus simple"


--
thibaut allender | freelance | http://capsule.org

Avatar
YD

j'aimerai créer une liste <select> proposant à l'utilisateur divers
choix de thème css pour l'affichage d'un site web. Le choix se fait
uniquement sur la page d'accueil, puis est mémorisé via cookie sur le
disque dur utilisateur.

Ainsi, sur chaque page une petite vérification du cookie permet
l'affichage du style demandé.

cependant ceci m'amène à quelques inconvénients que je ne parviens pas à
résoudre.


1) La fonction chargée de vérifier le cookie est appelée sur un
évènement onLoad de la balise <body> de mon document html, et à chaque
chargement de la page, je vois pendant un temps très bref le style par
défaut... j'aimerai que le style choisi par l'utilisateur (donc celui
enregistré dans le cookie) soit affiché dès le début, existe-t-il un
moyen de faire ça ?


La réponse est dans ta question ! Place l'appel à ton script dans la balise
<head> (soit directement à la fin de ton fichier js, soit en ajoutant un
script contenant l'appel à ta fonction. Si c'est dans la balise head le
style devrait être chargé avant que la page ne soit dessinée.

2) lorsque l'utilisateur choisi un thème via le <select> et qu'il change
de page, pour enfin revenir sur la page où se trouve le select, celui ci
réaffiche l'item par défaut, et non celui sélectionné par ses soins
(i.e. celui correspondant au thème affiché), je n'ai pas trouvé le moyen
en javascript de choisir l'item affiché dans un select... est-ce possible ?


Tu testes la valeur mémorisée, tu recherches l'option de ton select
correspondante et tu lui ajoutes l'attribut selected :
lOption.selected=true

tout ceci m'apporte a croire que ce que je veux faire n'est pas possible
en javascript ? vrai ? faux ?


Faux donc. Bien que pour ce qui est manipulation de cookie, l'habitude est
plutôt de traiter côté serveur (et le placement du selected dans la balise
idoine aussi) mais pour ce que tu veux faire, ce n'est pas forcément
nécessaire de passer par PHP.

--
Y.D.

Avatar
YD
Désolé, je t'ai "grillé" de 45 secondes 8-)

--
Y.D.
Avatar
Thibaut Allender
Désolé, je t'ai "grillé" de 45 secondes 8-)


je proteste... c'est moi qui t'ai grillé, et de 3 minutes :)

From: YD
Date: Sat, 04 Jun 2005 19:09:44 +0200

From: Thibaut Allender

Date: Sat, 04 Jun 2005 19:06:29 +0200

On doit pas avoir les mêmes dates :/

Sinon, pour revenir à nos moutons, je ne sais pas ce qui fonctionne le
mieux pour definir la valeur selected d'un select...

J'ai d'ailleurs remarqué que la constitution d'un select à la volée en
JS ne permettait pas de specifier un attribut selected sous IE windows
(3e parametre de new Option), qui semble être ignoré... Ca fonctionne
par contre très bien sous Mozilla.

--
thibaut allender | freelance | http://capsule.org

Avatar
YD

Désolé, je t'ai "grillé" de 45 secondes 8-)


je proteste... c'est moi qui t'ai grillé, et de 3 minutes :)


Je maintiens, d'après l'en-tête NNTP-Posting-Date...

Sinon, pour revenir à nos moutons, je ne sais pas ce qui fonctionne le
mieux pour definir la valeur selected d'un select...

J'ai d'ailleurs remarqué que la constitution d'un select à la volée en
JS ne permettait pas de specifier un attribut selected sous IE windows
(3e parametre de new Option), qui semble être ignoré... Ca fonctionne
par contre très bien sous Mozilla.


Il me semble me souvenir d'un fil là-dessus où on avait remarqué qu'il
valait mieux positionner les attributs *après* l'insertion dans le document
pour IE et ne pas utiliser setAttribute mais la propriété DOM0 (qui
existe toujours dans DOM2). Est-ce ainsi que tu as procédé ?

--
Y.D.


Avatar
nico
Thibaut Allender avait prétendu :


oui, avec ceci par exemple :
document.getElementById('id_du_select').selelecedIndex = 'value';



euh marche pas...


function set_combo()
{
var val=GetCookie('valeur');
alert(val);
document.getElementById('set').selectedIndex = val;
}



'val' est bien lu dans le cookie, car bien affichée en messageBox..
en revanche la combo ne change pas ed valeur...

--
nico
http://nicolas.aunai.free.fr

Avatar
nico
Il se trouve que YD a formulé :


Tu testes la valeur mémorisée, tu recherches l'option de ton select
correspondante et tu lui ajoutes l'attribut selected :
lOption.selected=true



et bien, c'est une autre solution que celle du selectedIndex = value de
thibaut, mais elle ne marche pas plus... ou alors je fais un truc mal
mais j'ai des doutes sur ça :-/


function set_combo()
{
var val=GetCookie('valeur');
var num=GetCookie('index');
alert(num);
document.form.set.options[num].selected = true;
//document.getElementById('set').selectedIndex = val;
}


j'ai créé un nouveau cookie 'index' pour stocker l'index de l'option
sélectionné par l'utilisateur, je le lis, et là l'alert(num) marche
bien, donc le numéro est lisible à cet endroit...

ensuite le :
document.form.set.options[num].selected = true;
ne semble pas marcher...

pourtant je suis a peu près sûr de la syntaxe utilisée...

--
nico
http://nicolas.aunai.free.fr

Avatar
Thibaut Allender
function set_combo()
{
var val=GetCookie('valeur');
alert(val);
document.getElementById('set').selectedIndex = val;
}

'val' est bien lu dans le cookie, car bien affichée en messageBox..
en revanche la combo ne change pas ed valeur...


je me suis trompé, il ne faut pas lui specifier la valeur de l'option,
mais son index, donc entre 0 et nombre de valeurs moins 1



--
thibaut allender | freelance | http://capsule.org

Avatar
nico
Thibaut Allender a formulé ce samedi :


je me suis trompé, il ne faut pas lui specifier la valeur de l'option,
mais son index, donc entre 0 et nombre de valeurs moins 1


aaaah en effet, premièrement ça semble plus logique... et deuxièmement,
ça marche..

merci, tu as une idée quant à la solution de YD pour ce même pb ?

--
nico
http://nicolas.aunai.free.fr

1 2 3 4