Garder des données javascript d'une page à l'autre
2 participants
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Problème avec un script, un code :: Archives des problèmes avec un code
Page 1 sur 1 • Partagez
Garder des données javascript d'une page à l'autre
Détails techniques
Version du forum : phpBB2Poste occupé : Fondateur
Navigateur(s) concerné(s) : non défini
Personnes concernées par le problème : Moi uniquement
Lien du forum : https://ins-schools.forumactif.com/
Description du problème
BonjourJ'ai quelques petits soucis avec un code que je fais parce que ça implique du javascript que je ne maîtrise pas (mes notions en la matière sont un peu limitées on va pas se mentir ^^')
J'ai deux infos sur mon forum qui sont changées par une action javascript : le div à côté de la bannière qui change en cliquant sur une des trois images, et les onglets du bloc PA.
En gros, cliquer sur la première image passe en display:block un div et cache les deux autres, etc. Le problème, c'est que le changement ne reste pas quand on change de page, et que j'aimerais bien, au contraire, que ça reste =/ J'ai cru comprendre que ça fonctionnait avec localStorage mais je sais pas du tout comment l'implémenter. Pareil pour les onglets qui se remettent systématiquement sur l'onglet 1 en actualisant la page du coup.
(Note : quand je parle d'onglets PA je parle pas de séparation des catégories en onglets, j'ai déjà un code pour ça, mais du tableau sous la bannière)
Mes codes pour l'instant ressemblent à ça :
- div haut de page:
- Code:
<script type="text/javascript">
function CANADA()
{
document.getElementById("ottawa1").style.display="block";
document.getElementById("ottawa2").style.display="inline";
document.getElementById("malmo1").style.display="none";
document.getElementById("malmo2").style.display="none";
document.getElementById("autre").style.display="none";
}
function SUEDE()
{
document.getElementById("ottawa1").style.display="none";
document.getElementById("ottawa2").style.display="none";
document.getElementById("malmo1").style.display="block";
document.getElementById("malmo2").style.display="inline";
document.getElementById("autre").style.display="none";
}
function AUTRE()
{
document.getElementById("ottawa1").style.display="none";
document.getElementById("ottawa2").style.display="none";
document.getElementById("malmo1").style.display="none";
document.getElementById("malmo2").style.display="none";
document.getElementById("autre").style.display="block";
}
</script>
- Onglets PA:
- $(function(){
$('.tab').click(function(){ //quand je clique sur un onglet, les actions suivantes se déclenchent
$('.active').removeClass('active'); //l'onglet actif change: on enlève la class de l'ancien onglet
$('.contentBox > div').hide(); //tous les contenus sont masqués
var tab = $(this).attr('id'); //je récupère l'id de l'onglet pour pouvoir cibler le contenu correspondant
$('#content_' + tab).fadeIn(); //le contenu qui correspond à l'onglet s'affiche
$(this).addClass('active'); //on ajoute la class "active" à l'onglet actif, soit celui qu'on vient de cliquer
});
});
Voilà, si quelqu'un a un petit moment pour m'expliquer comment ça fonctionne j'en serais infiniment reconnaissante parce que ça m'embêterait de devoir laisser cette idée de côté =(
Merci d'avance et bonne journée =)
Dernière édition par IzumiRK le Ven 26 Nov - 21:11, édité 1 fois
Re: Garder des données javascript d'une page à l'autre
Bonjour !
Commençons par le premier script pour le div à côté de la bannière.
Ce qu'on va vouloir faire, c'est créer une première variable localStorage 'pays' qui va contenir une valeur différente en fonction du bouton sur lequel on aura cliqué. Pour ça, on fait juste un localStorage.setItem('pays', 'CANADA'); dans les 3 fonctions que vous avez créé, et on change à chaque fois la valeur du deuxième paramètre :
Et après les déclarations des fonctions, on fait un test sur la valeur de ce localStorage 'pays' : si c'est CANADA, on appelle la fonction CANADA() pour afficher ottawa1 et ottawa2 et masquer le reste. Si c'est SUEDE, on appelle la fonction SUEDE()... et si ce n'est ni l'un ni l'autre, on appelle par défaut la fonction AUTRE(). Ainsi, à chaque chargement de page, on appellera la dernière fonction qui a été appelée parce qu'on aura sauvegardé la valeur dans le localStorage 'pays'.
Pour le deuxième script maintenant, on va faire de la même façon avec une deuxième localStorage qu'on va appeler 'onglets' cette fois. Un peu plus compliqué avec la façon dont est écrit ce script, alors on va commencer par le réécrire de façon à nous arranger : encore avec une fonction.
On sauvegarde cette fois l'id de l'onglet sur lequel on a cliqué, et on rajoute une dernière ligne changeOnglet(localStorage.getItem('onglets')); pour appeler la fonction avec le dernier onglet sauvegardé dans le localStorage.
Avec ça, tout fonctionne comme vous le voulez normalement !
Commençons par le premier script pour le div à côté de la bannière.
Ce qu'on va vouloir faire, c'est créer une première variable localStorage 'pays' qui va contenir une valeur différente en fonction du bouton sur lequel on aura cliqué. Pour ça, on fait juste un localStorage.setItem('pays', 'CANADA'); dans les 3 fonctions que vous avez créé, et on change à chaque fois la valeur du deuxième paramètre :
- div haut de page:
- Code:
<script type="text/javascript">
function CANADA(){
document.getElementById("ottawa1").style.display="block";
document.getElementById("ottawa2").style.display="inline";
document.getElementById("malmo1").style.display="none";
document.getElementById("malmo2").style.display="none";
document.getElementById("autre").style.display="none";
localStorage.setItem('pays', 'CANADA');
}
function SUEDE(){
document.getElementById("ottawa1").style.display="none";
document.getElementById("ottawa2").style.display="none";
document.getElementById("malmo1").style.display="block";
document.getElementById("malmo2").style.display="inline";
document.getElementById("autre").style.display="none";
localStorage.setItem('pays', 'SUEDE');
}
function AUTRE(){
document.getElementById("ottawa1").style.display="none";
document.getElementById("ottawa2").style.display="none";
document.getElementById("malmo1").style.display="none";
document.getElementById("malmo2").style.display="none";
document.getElementById("autre").style.display="block";
localStorage.setItem('pays', 'AUTRE');
}
switch (localStorage.getItem('pays')){
case 'CANADA' : CANADA(); break;
case 'SUEDE' : SUEDE(); break;
default : AUTRE();
}
</script>
Et après les déclarations des fonctions, on fait un test sur la valeur de ce localStorage 'pays' : si c'est CANADA, on appelle la fonction CANADA() pour afficher ottawa1 et ottawa2 et masquer le reste. Si c'est SUEDE, on appelle la fonction SUEDE()... et si ce n'est ni l'un ni l'autre, on appelle par défaut la fonction AUTRE(). Ainsi, à chaque chargement de page, on appellera la dernière fonction qui a été appelée parce qu'on aura sauvegardé la valeur dans le localStorage 'pays'.
Pour le deuxième script maintenant, on va faire de la même façon avec une deuxième localStorage qu'on va appeler 'onglets' cette fois. Un peu plus compliqué avec la façon dont est écrit ce script, alors on va commencer par le réécrire de façon à nous arranger : encore avec une fonction.
- Onglets PA:
- Code:
$(function() {
function changeOnglet(tabId){
$('.active').removeClass('active'); //l'onglet actif change: on enlève la class de l'ancien onglet
$('.contentBox > div').hide(); //tous les contenus sont masqués
$('#content_' + tabId).fadeIn(); //le contenu qui correspond à l'onglet s'affiche
$(this).addClass('active'); //on ajoute la class "active" à l'onglet actif, soit celui qu'on vient de cliquer
localStorage.setItem('onglets', tabId);
}
$('.tab').click(function() { //quand je clique sur un onglet, les actions suivantes se déclenchent
changeOnglet($(this).attr('id')); //je récupère l'id de l'onglet pour pouvoir cibler le contenu correspondant, et j'appelle la fonction avec
});
changeOnglet(localStorage.getItem('onglets'));
});
On sauvegarde cette fois l'id de l'onglet sur lequel on a cliqué, et on rajoute une dernière ligne changeOnglet(localStorage.getItem('onglets')); pour appeler la fonction avec le dernier onglet sauvegardé dans le localStorage.
Avec ça, tout fonctionne comme vous le voulez normalement !
Re: Garder des données javascript d'une page à l'autre
Merci ! ^-^
Le deuxième marche mais le premier n'a pas l'air de fonctionner. Peut-être que ce serait plus simple si je crée une class pour masquer/afficher comme avec les onglets ?
Le deuxième marche mais le premier n'a pas l'air de fonctionner. Peut-être que ce serait plus simple si je crée une class pour masquer/afficher comme avec les onglets ?
Re: Garder des données javascript d'une page à l'autre
Bonjour,
Je ne vois pas les modifications sur votre forum, est-ce que vous pourriez les appliquer ou me dire où est-ce que vous testez ces scripts, afin que je puisse regarder ce qui ne va pas ?
Merci !
Je ne vois pas les modifications sur votre forum, est-ce que vous pourriez les appliquer ou me dire où est-ce que vous testez ces scripts, afin que je puisse regarder ce qui ne va pas ?
Merci !
Re: Garder des données javascript d'une page à l'autre
Ah oui pardon, entre temps j'ai déplacé le design sur l'adresse du vrai forum ^^'
J'ai changé le lien sur le post original
https://ins-schools.forumactif.com
J'ai changé le lien sur le post original
https://ins-schools.forumactif.com
Re: Garder des données javascript d'une page à l'autre
Bonjour !
D'accord, je viens de m'apercevoir d'une chose : pour le div haut de page, votre code est à la fois dans un js et à la fois dans un template. Je n'avais vu que celui du template à la base, et le code que je fournis fonctionnerait pour le template. Du coup, il va falloir que vous supprimiez l'un des deux, et en fonction de celui que vous garderez, voici les codes correspondants :
Code du template :
Code du js :
Je conseillerais plutôt la méthode template, mais si c'est plus pratique pour vous d'avoir tout dans le js pour ne pas oublier, prenez la méthode js ! La seule différence entre les deux, c'est que pour la méthode js, vous pourriez avoir un effet "switch visible au moment du chargement du script", comme si le div par défaut apparaissait, puis était remplacé par le dernier cliqué. Alors que pour la méthode template, ce serait instantané, vous ne verriez que le dernier cliqué et ce serait plus propre !
D'accord, je viens de m'apercevoir d'une chose : pour le div haut de page, votre code est à la fois dans un js et à la fois dans un template. Je n'avais vu que celui du template à la base, et le code que je fournis fonctionnerait pour le template. Du coup, il va falloir que vous supprimiez l'un des deux, et en fonction de celui que vous garderez, voici les codes correspondants :
Code du template :
- Code:
<script type="text/javascript">
function CANADA(){
document.getElementById("ottawa1").style.display="block";
document.getElementById("ottawa2").style.display="inline";
document.getElementById("malmo1").style.display="none";
document.getElementById("malmo2").style.display="none";
document.getElementById("autre").style.display="none";
localStorage.setItem('pays', 'CANADA');
}
function SUEDE(){
document.getElementById("ottawa1").style.display="none";
document.getElementById("ottawa2").style.display="none";
document.getElementById("malmo1").style.display="block";
document.getElementById("malmo2").style.display="inline";
document.getElementById("autre").style.display="none";
localStorage.setItem('pays', 'SUEDE');
}
function AUTRE(){
document.getElementById("ottawa1").style.display="none";
document.getElementById("ottawa2").style.display="none";
document.getElementById("malmo1").style.display="none";
document.getElementById("malmo2").style.display="none";
document.getElementById("autre").style.display="block";
localStorage.setItem('pays', 'AUTRE');
}
switch (localStorage.getItem('pays')){
case 'CANADA' : CANADA(); break;
case 'SUEDE' : SUEDE(); break;
default : AUTRE();
}
</script>
Code du js :
- Code:
function CANADA(){
document.getElementById("ottawa1").style.display="block";
document.getElementById("ottawa2").style.display="inline";
document.getElementById("malmo1").style.display="none";
document.getElementById("malmo2").style.display="none";
document.getElementById("autre").style.display="none";
localStorage.setItem('pays', 'CANADA');
}
function SUEDE(){
document.getElementById("ottawa1").style.display="none";
document.getElementById("ottawa2").style.display="none";
document.getElementById("malmo1").style.display="block";
document.getElementById("malmo2").style.display="inline";
document.getElementById("autre").style.display="none";
localStorage.setItem('pays', 'SUEDE');
}
function AUTRE(){
document.getElementById("ottawa1").style.display="none";
document.getElementById("ottawa2").style.display="none";
document.getElementById("malmo1").style.display="none";
document.getElementById("malmo2").style.display="none";
document.getElementById("autre").style.display="block";
localStorage.setItem('pays', 'AUTRE');
}
$(function () {
switch (localStorage.getItem('pays')){
case 'CANADA' : CANADA(); break;
case 'SUEDE' : SUEDE(); break;
default : AUTRE();
}
});
Je conseillerais plutôt la méthode template, mais si c'est plus pratique pour vous d'avoir tout dans le js pour ne pas oublier, prenez la méthode js ! La seule différence entre les deux, c'est que pour la méthode js, vous pourriez avoir un effet "switch visible au moment du chargement du script", comme si le div par défaut apparaissait, puis était remplacé par le dernier cliqué. Alors que pour la méthode template, ce serait instantané, vous ne verriez que le dernier cliqué et ce serait plus propre !
Re: Garder des données javascript d'une page à l'autre
Comme ça n'avait pas l'air de fonctionner, j'ai décidé de tenter en le mettant en code javascript via les modules du forum, j'ai dû oublier d'enlever l'un des deux
En tout cas maintenant ça fonctionne (alors que le code est le même a priori), du coup je sais pas ce qui clochait la première fois que j'ai tenté (peut-être un problème de cache dans le navigateur)
Merci beaucoup du coup de main ! =)
En tout cas maintenant ça fonctionne (alors que le code est le même a priori), du coup je sais pas ce qui clochait la première fois que j'ai tenté (peut-être un problème de cache dans le navigateur)
Merci beaucoup du coup de main ! =)
Sujets similaires
» Garder une position en mémoire après changement par javascript
» Javascript - Garder le même onglet ouvert / personnaliser le champ date
» [formulaire] Récupération données JavaScript choix multiples
» Ma Page D'accueil en Javascript ne fonctionne plus
» Javascript au onload de toute page.
» Javascript - Garder le même onglet ouvert / personnaliser le champ date
» [formulaire] Récupération données JavaScript choix multiples
» Ma Page D'accueil en Javascript ne fonctionne plus
» Javascript au onload de toute page.
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Problème avec un script, un code :: Archives des problèmes avec un code
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum