Beruflich Dokumente
Kultur Dokumente
JavaScript
M4103C - Programmation Web – client riche
● À quoi ça sert ?
● Exemple 1
Marcel Bosc
● Exemple 2
Google Maps
À quoi ça sert ?
Menus déroulants
etc.
JS = navigateur Serveur = lent
client site.org client (navigateur) serveur
site.org
navigateur
http://site.org/saisie.php apache
votre adresse:
1
toto@site.o 2
HTML CSS serveur web saisie.php
envoyer
Javascript PHP ou Java
envoyer
script Emploi :
client très demandé
pas d'interaction
client / serveur
Sympa !
lente
adresse non valide!
toto@site.o 2
envoyer
internet
2ème partie Exemple
<html> exemple.html
<head>
<title>exemple</title>
<script src="jquery.js"></script>
Présentation <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');
});
});
});
HTML arbre DOM
<body> Document Object Model
<h1>Ceci est un titre</h1> représentation objet des
<p> p
éléments HTML du document
Un paragraphe de texte avec un
<a href="page2.html">lien</a> vers une autre a img a
page. Les mots suivants
<strong>sont importants</strong>
strong img <img id="photo" ... />
</p>
</body>
body
On peut le manipuler
un objet!
en Javascript
h1 p
$('#photo').hide();
« $ » = jQuery
3ème partie Exemple
Exemple 1 $(document).ready(function()
{
$('h1').click(function()
{
$('p').text('Bonjour!');
$('p').css('color','red');
});
});
body <body>
p {color: red;} <h1>Ceci est un titre</h1>
<p>bla bla bla</p>
h1 p
<h1>Un essai</h1>
</body>
<h2>Titre section-1</h2>
« # » = id
<p id="para1">bla bla bla bla</p>
balise
<h2 class="actu">Titre section-2</h2>
« . » = class
<p>bli bli bli bli bli</p>
<h2>Titre section-3</h2> $('p').css('color','red');
<p>Qu'est qu'on s'amuse!</p>
<h2 class="actu">Titre section-4</h2>
<p>abc def ghi jkl mno</p> $('xyz')
<h2 class="actu">Titre section-5</h2> liste de tous les éléments
correspondant au sélecteur xyz
.actu {color: blue;}
Liste jQuery Fonction jQuery : .css()
<body>
body Sur la liste appeler la fonction "css"
<h1 class="actu">un titre</h1>
<p class="actu">bla bla</p>
h1 p p <p>bla bla</p>
</body>
$('p').css('color','red');
<p>bla bla</p>
true
$('p').hasClass('actu')
false
<p>bonjour <a href="...">joe</a></p>
DOM & jQuery DOM & jQuery
j=« liste » d'un seul élément jQuery
var j=$('#photo'); jQuery DOM
j.css('color','red'); d.style.color="red";
d = un élément DOM j.width(100); d.style.width="100px";
var d=document.getElementById('photo'); j.addClass('actu'); d.className+=' actu';
j.removeClass('actu'); d.className=d.className.repla
ce(/\bactu\b/,' ')
DOM jQuery jQuery DOM j.text('bonjour'); d.textContent='bonjour';
j.html('bonjour <a ...>joe</a>'); d.innerHTML('bonjour <a ...>joe</a>');
DOM jQuery
jQuery DOM
body
Ceci est un titre
$(document).ready(function() h1 p click sur h1
bla bla bla
{
$('h1').click(function()
{
$('p').text('Bonjour!');
$('p').css('color','red');
}); $('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 Programmation événementielle
Séquentielle « classique » Événementielle
click click bouton souris
mousedown bouton souris enfoncé début. début.
mouseover souris entre sur un élément
1. Afficher "bonjour" 1. Afficher "bonjour"
mousemove souris bouge sur un élément 2. Afficher carré rouge 2. si click appeler fonction
keydown touche enfoncée 3. Afficher ligne "reagir_click"
...
keyup touche relâchée
keypress touche enfoncée et relâchée fin. attendre
ready / load élément a fini de charger click utilisateur
change élément formulaire modifié reagir_click()
submit formulaire envoyé Afficher carré rouge
...
$('h1').click(une_fonction_a_appeler);
...
$(document).ready(function()
function une_fonction_a_appeler(event) {
{ $('h1').click(function()
if(event.which===1) {
{ $('p').text('Bonjour!');
$(this).css('font-size','12px'); $('p').css('color','red');
} });
});
}
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 exemple2.js
<body>
<div> $(document).ready(function()
<input id="saisie" type="text"> { <div>
<input id="ajouter" type="button" value="Ajouter"/> $('#ajouter').click(function() <input id="saisie" type="tex
</div> { <input id="ajouter" type="but
<ul id="liste"> var ligne=$('<li></li>'); </div>
<li>Tom</li> var texte=$('#saisie').val(); <ul id="liste">
<li>Joe</li> ligne.text(texte); <li>Tom</li>
</ul> $('#liste').append(ligne); <li>Joe</li>
</body> }); </ul>
});
body
div ul
input input li li
Rappels Fonction jQuery : .val()
$(document).ready(function()
{
attendre événement $('#ajouter').click(function()
$(document).ready(function() « prêt » sur doc. {
{ var ligne=$('<li></li>');
$('#ajouter').click(function() attendre événement var texte=$('#saisie').val();
{ ligne.text(texte);
var ligne=$('<li></li>'); « click » sur élém. $('#liste').append(ligne);
var texte=$('#saisie').val(); id="ajouter" });
ligne.text(texte); });
$('#liste').append(ligne); changer texte
});
}); dans él. jQuery
<select> <input type="text"/> <textarea>
« ligne »
$('<xyz ..>...</xyz>')
$('#liste').append(ligne);
Crée des nouveaux éléments
à partir du code HTML. éléments à ajouter :
endroit où ajouter $('<li></li>')
Où ajouter dans l'arbre DOM ?
$('ul').before(...); $('ul').after(...);
div ul http://www.gnu.org/copyleft/fdl.html
Les originaux sont disponibles au format LibreOffice
li li http://www-info.iutv.univ-paris13.fr/~bosc
$('ul').prepend(...); $('ul').append(...);