Chargement sans arret après onclick [Résolu]

Signaler
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013
-
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013
-
Bonjour

Je suis débutant en javascript et j'ai un petit souci. J'ai créé un agenda qui affiche le mois complet et qui met en surbrillance la date du jour. J'ai ajouté un onclick sur les cellules pour pouvoir sélectionner un autre jour. Ca fonctionne bien mais la page charge en permanence, comme si on ne sortait pas du script.

J'ai mis la page en ligne ici

Merci pour votre aide
Jerem

5 réponses

Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
12
Bonjour,

Je me suis basé sur le code du calendrier que j'ai trouvé tout fait et que j'ai adapté à ma sauce.

L'utilisation des codes tout fait, n'est malgré ce qu'on veut croire pas destiné au débutant. Il faut déjà comprendre correctement le JavaScript, avant d'utiliser du tout fait. C'est mieux pour comprendre ce que fait un script et l'adapter à ses besoins. Pour débuter, il vaut mieux faire les choses soit même, ça permet de comprendre.

Si j'ai bien compris, il faut que je définisse mes variables en javascript et que je crée mes TD un par un ?

Oui, il faudrait faire quelque chose comme ceci :
<html>
<head>
<script type= "text/javascript">
function changerLaDate(col) {
// Blabla
}
</script>
</head>

 Calendrier  |

----

1,
2,
3,
4,
5,
6,
7,

<!-- et caetera -->


</html>


Mais est-ce que ma page va s'adapter avec une function sur un onclick ? Il faut peut-être que je la rafraîchisse ?

Oui, elle va s'adapter. C'est le principe de JavaScript justement, modifier un document (une page), sans avoir à recharger cette page depuis le serveur (la rafraichir)

Dans un cadre professionnel, on utilise des frameworks, ou librairies JavaScript (on devrait dire cadre applicatif, je pense), tels jQuery, script.aculo.us ou encore MooTools et bien d'autres. Ces librairies ne sont pas l’œuvre d'une personne, mais d'un groupe de personnes qui assurent une certaine compatibilité des scripts avec l'ensemble des navigateurs modernes (internet explorer, firefox, safari, etc). Ce qui facilite la mise en œuvre d'applications restant fonctionnelles sur un maximum de plateformes. Il vaut mieux ne pas utiliser les scripts, trouvés sur internet, par hasard ou par chance, sauf dans de rares cas et de préférence en comprenant ce que font exactement ces scripts. Ces scripts, quelque soit leur qualité, ne bénéficient pas de la même qualité de tests que des librairies éprouvées comme jQuery et d'autres citées.

Un exemple de calendrier tout fait avec jQuery (http://jqueryui.com/datepicker/) :
<!doctype html>
<html lang ="en">
<head>
<meta charset="utf-8" />
<title>jQuery UI Datepicker - Default functionality</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
<script>
$(function() {
$( "#datepicker" ).datepicker();
});
</script>
</head>

Date: 



</html>
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Salut,

perso le fonctionnement que j'ai sur ta page :
- 1er clic : fonctionnement correct (a priori),
- 2ème clic : ajout d'un autre calendrier en-dessous de l'ancien.

Le code est un peu gros pour que j'ai le temps d'y jeter un oeil.
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
12
Bonjour,

L'utilisation de document.write, une fois la page complètement chargée, provoque la destruction complète de ce que la page contenait avant, y compris le script que tu as écris dans une balise <script>. Ton impression de "ne pas sortir du script" est fondée. Tu ne sors pas de ton script, parce qu'après le clic sur une cellule, la fonction calendrier qui utilise des document.write, écrase la balise <script> et son contenu qui ont été chargés initialement avec la page. En quelque sorte, le script "se détruit lui même" au moment de l'appel à ta première instruction document.write de la fonction calendrier, après le clic, et au retour de cette instruction, comme le script n'existe plus, le moteur javascript ne sait plus quoi faire et l'indique à ton navigateur, qui est à peu près renforcé pour ce genre d'erreur, et place l'onglet dans un mode de fonctionnement bloqué. Une situation de blocage, avec le truc qui tourne sans arrêt, qui donne l'impression d'attendre un chargement mais qui veut dire attente d'un événement externe pour sortir d'une situation de blocage.
- Il vaut mieux ne pas utiliser document.write, sinon en comprenant bien son fonctionnement.
- il vaut mieux construire ton tableau en HTML et interagir dessus avec du javascript, que construire et interagir en même temps sur le tableau, tout ça en javascript uniquement.
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

Merci pour votre aide et le temps que vous avez passé.

Je me suis basé sur le code du calendrier que j'ai trouvé tout fait et que j'ai adapté à ma sauce.
Si j'ai bien compris, il faut que je définisse mes variables en javascript et que je crée mes TD un par un ? Mais est-ce que ma page va s'adapter avec une function sur un onclick ? Il faut peut-être que je la rafraîchisse ?


Jer
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

Merci beaucoup pour ton aide. Je vais regarder tout ça plus tard.

Je viens du VB et passer au HTML et tout ce qui va autour est encore un peu chinois pour moi.

Merci à tous

Jerem