Exemples - Moodle - IUT de Villetaneuse
Transcription
Exemples - Moodle - IUT de Villetaneuse
Table des matières JavaScript M4103C - Programmation Web – client riche ● À quoi ça sert ? ● Présentation ● Exemple 1 ● Exemple 2 2ème année - S4, cours - 1/5 2014-2015 Marcel Bosc Département informatique IUT de Villetaneuse Université Paris-13 Exemples 1ère partie Js partout ! Google Maps À quoi ça sert ? Menus déroulants etc. Serveur = lent JS = navigateur site.org client client navigateur CSS serveur web Javascript PHP ou Java site.org http://site.org/saisie.php votre adresse: HTML serveur (navigateur) 1 [email protected] apache 2 saisie.php envoyer 3 lenteur réseau exécution PHP - serveur chargé lenteur réseau lenteur affichage adresse non valide! [email protected] SQL internet internet Utile et sympa ! serveur (navigateur) votre adresse: 4 très simplifié... JavaScript = rapide client envoyer site.org apache 1 Stages : presque tous Web => JS [email protected] script client envoyer Emploi : très demandé pas d'interaction client / serveur lente adresse non valide! [email protected] 2 envoyer internet Sympa ! Exemple 2ème partie Présentation exemple.html <html> <head> <title>exemple</title> <script src="jquery.js"></script> <script src="exemple.js"></script> </head> <body> <h1>Ceci est un titre</h1> <p>bla bla bla</p> </body> </html> $(document).ready(function() exemple.js { $('h1').click(function() { $('p').text('Bonjour!'); $('p').css('color','red'); }); }); Syntaxe $(document).ready(function() { Type Type implicite implicite var i; (pas (pas de de "int", "int", "String"...) "String"...) for(i=0; i<10; i++) { console.log('exemple '+i); if(i>5){console.log('i est > 5');} Syntaxe Syntaxe "C" "C" } (PHP, (PHP, Java...) Java...) Programme js $(document).ready(function() { var i; for(i=0; i<10; i++) { console.log('exemple '+i); if(i>5){console.log('i est > 5');} } Changer couleur Cacher / montrer $('#bouton').click(function() { alert('Le bouton a été appuyé !'); }); une_fonction_exemple(); function une_fonction_exemple() { alert("C'est moi !"); }; }); Changer l'affichage Ajouter image }); Navigateur Un titre un paragraphe HTML DOM arbre <body> <h1>Ceci est un titre</h1> <p> Un paragraphe de texte avec un <a href="page2.html">lien</a> vers une autre page. Les mots suivants <strong>sont importants</strong> </p> </body> Document Object Model représentation objet des éléments HTML du document p a img a strong img body un objet! h1 p Text Text Ceci est un titre Un para... avec un a Text lien Text vers une... suivants <img id="photo" ... /> On peut le manipuler en Javascript i=document.getElementById("photo"); i.style.border="1px solid red"; strong Text sont importants Principaux objets DOM jQuery Facilite l'accès au DOM window Un titre DOM brut : un paragraphe HTMLElement document.getElementById('photo').style.display="none"; document jQuery : $('#photo').hide(); « $ » = jQuery Exemple 3ème partie Exemple 1 $(document).ready(function() { $('h1').click(function() { $('p').text('Bonjour!'); $('p').css('color','red'); }); }); Rappel : sélecteurs CSS Liste jQuery #para1 {color: green;} body p {color: red;} « # » = id balise « . » = class <h1>Un essai</h1> <h2>Titre section-1</h2> <p id="para1">bla bla bla bla</p> <h2 class="actu">Titre section-2</h2> <p>bli bli bli bli bli</p> <h2>Titre section-3</h2> <p>Qu'est qu'on s'amuse!</p> <h2 class="actu">Titre section-4</h2> <p>abc def ghi jkl mno</p> <h2 class="actu">Titre section-5</h2> .actu {color: blue;} h1 p <body> <h1>Ceci est un titre</h1> <p>bla bla bla</p> </body> $('p').css('color','red'); $('xyz') liste de tous les éléments correspondant au sélecteur xyz Liste jQuery body h1 p p <body> <h1 class="actu">un titre</h1> <p class="actu">bla bla</p> <p>bla bla</p> </body> $('.actu').css('color','red'); Fonction jQuery : .css() Sur la liste appeler la fonction "css" $('p').css('color','red'); ".css()" change la propriété « style » des éléments : <p> Fonctions jQuery : class $('p').addClass('actu'); <p> <p style="color: red;"> Fonctions jQuery : .text() .html() $('p').text('bonjour'); <p class="actu"> <p>bla bla</p> <p>bonjour</p> Mieux que .css() ! class + fichier CSS $('p').removeClass('actu'); <p class="actu"> <p> $('p').html('bonjour <a href="...">joe</a>'); <p>bla bla</p> $('p').hasClass('actu') true false <p>bonjour <a href="...">joe</a></p> DOM & jQuery DOM & jQuery j=« liste » d'un seul élément jQuery jQuery j.css('color','red'); j.width(100); j.addClass('actu'); j.removeClass('actu'); var j=$('#photo'); d = un élément DOM var d=document.getElementById('photo'); DOM jQuery jQuery DOM jQuery DOM $(d) $('#photo')[0] jQuery DOM j.text('bonjour'); j.html('bonjour <a ...>joe</a>'); DOM d.style.color="red"; d.style.width="100px"; d.className+=' actu'; d.className=d.className.repla ce(/\bactu\b/,' ') d.textContent='bonjour'; d.innerHTML('bonjour <a ...>joe</a>'); ... Exemple Réagir à un événement body $(document).ready(function() { $('h1').click(function() { $('p').text('Bonjour!'); $('p').css('color','red'); }); }); Ceci est un titre h1 p bla bla bla click sur h1 $('h1').click(une_fonction_a_appeler); Gestionnaire d’événement : une fonction qui sera appelée plus tard, lorsqu'un événement se produit Événements click mousedown mouseover mousemove keydown keyup keypress ready / load change submit click bouton souris bouton souris enfoncé souris entre sur un élément souris bouge sur un élément touche enfoncée touche relâchée touche enfoncée et relâchée élément a fini de charger élément formulaire modifié formulaire envoyé Programmation événementielle Séquentielle « classique » Événementielle début. début. 1. Afficher "bonjour" 2. Afficher carré rouge 3. Afficher ligne ... 1. Afficher "bonjour" 2. si click appeler fonction "reagir_click" fin. attendre click utilisateur reagir_click() Afficher carré rouge ... Event / this Exemple $('h1').click(une_fonction_a_appeler); ... function une_fonction_a_appeler(event) { if(event.which===1) { $(this).css('font-size','12px'); } } this : élément DOM cible de l'événement event : objet décrivant l'événement $(document).ready(function() { $('h1').click(function() { $('p').text('Bonjour!'); $('p').css('color','red'); }); }); Fonction anonyme 4ème partie Approche « habituelle » $('h1').click(une_fonction_a_appeler); lourd ... Exemple 2 ... function une_fonction_a_appeler() { $('p').css('color','red'); } Fonction anonyme $('h1').click(function() { pratique... très utilisé ! $('p').css('color','red'); }); Exemple 2 <body> <div> <input id="saisie" type="text"> <input id="ajouter" type="button" value="Ajouter"/> </div> <ul id="liste"> <li>Tom</li> <li>Joe</li> </ul> </body> body div input input ul li li exemple2.js $(document).ready(function() { $('#ajouter').click(function() { var ligne=$('<li></li>'); var texte=$('#saisie').val(); ligne.text(texte); $('#liste').append(ligne); }); }); <div> <input id="saisie" type="tex <input id="ajouter" type="but </div> <ul id="liste"> <li>Tom</li> <li>Joe</li> </ul> Rappels Fonction jQuery : .val() attendre événement $(document).ready(function() { $('#ajouter').click(function() { var ligne=$('<li></li>'); var texte=$('#saisie').val(); ligne.text(texte); $('#liste').append(ligne); }); }); « prêt » sur doc. attendre événement « click » sur élém. id="ajouter" changer texte dans él. jQuery « ligne » Créer un élément $(document).ready(function() { $('#ajouter').click(function() { var ligne=$('<li></li>'); var texte=$('#saisie').val(); ligne.text(texte); $('#liste').append(ligne); }); }); $('<xyz ..>...</xyz>') Crée des nouveaux éléments à partir du code HTML. $(document).ready(function() { $('#ajouter').click(function() { var ligne=$('<li></li>'); var texte=$('#saisie').val(); ligne.text(texte); $('#liste').append(ligne); }); }); <select> <input type="text"/> <textarea> Ajouter dans l'arbre DOM body élément <li> pas div ul <ul id="liste"> encore dans l'arbre DOM input input li li $('#liste').append(ligne); endroit où ajouter éléments à ajouter : $('<li></li>') Où ajouter dans l'arbre DOM ? $('ul').before(...); $('ul').after(...); body Ce document est distribué librement. Sous licence GNU FDL : div http://www.gnu.org/copyleft/fdl.html ul Les originaux sont disponibles au format LibreOffice li $('ul').prepend(...); li http://www-info.iutv.univ-paris13.fr/~bosc $('ul').append(...);