Chargement sans arret après onclick

Résolu
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013 - 10 févr. 2013 à 14:47
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013 - 14 févr. 2013 à 15:42
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

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
14 févr. 2013 à 14:05
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>
3
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
11 févr. 2013 à 10:31
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.
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
11 févr. 2013 à 20:10
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.
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
14 févr. 2013 à 12:36
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
14 févr. 2013 à 15:42
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
0
Rejoignez-nous