javascript : agir sur les élémentsroutier/... · les s´electeurs avec les pseudo-classes :link,...
TRANSCRIPT
selections manipulations
javascript :
agir sur les elements
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 1
selections manipulations
au programme...
1 selections
2 manipulations
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 2
selections manipulations
au programme...
1 selections
2 manipulations
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 3
selections manipulations
selection d’elements
Pour manipuler les elements de la page il faut au prealable lesselectionner.
La selection d’elements peut se fairepar son attribut id
par son attribut classpar sa balisepar un selecteur CSS
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 4
selections manipulations
selection d’elements
Pour manipuler les elements de la page il faut au prealable lesselectionner.
La selection d’elements peut se fairepar son attribut idpar son attribut class
par sa balisepar un selecteur CSS
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 4
selections manipulations
selection d’elements
Pour manipuler les elements de la page il faut au prealable lesselectionner.
La selection d’elements peut se fairepar son attribut idpar son attribut classpar sa balise
par un selecteur CSS
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 4
selections manipulations
selection d’elements
Pour manipuler les elements de la page il faut au prealable lesselectionner.
La selection d’elements peut se fairepar son attribut idpar son attribut classpar sa balisepar un selecteur CSS
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 4
selections manipulations
selection par l’identite
getElementById
la methode getElementById de l’objet document selectionnel’unique element du document dont l’id est fourni en parametre, ounull si aucun
le resultat est un objet element (de type HTMLElement)
1 var element = document.getElementById("joconde");
exemple-selection.html - exemple-selection.js
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 5
selections manipulations
selection par l’attribut classe
getElementsByClassName
la methode getElementsByClassName selectionne les elements dontla classe est fournie en parametre
peut s’invoquer sur l’objet document ou sur un objet element,dans le second cas seuls les elements descendants sont selectionnesa pour resultat la liste des elements selectionnes−→ se manipule comme un tableau non mutablecette liste est dynamique
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 6
selections manipulations
selection par l’attribut classe
getElementsByClassName
la methode getElementsByClassName selectionne les elements dontla classe est fournie en parametre
peut s’invoquer sur l’objet document ou sur un objet element,dans le second cas seuls les elements descendants sont selectionnes
a pour resultat la liste des elements selectionnes−→ se manipule comme un tableau non mutablecette liste est dynamique
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 6
selections manipulations
selection par l’attribut classe
getElementsByClassName
la methode getElementsByClassName selectionne les elements dontla classe est fournie en parametre
peut s’invoquer sur l’objet document ou sur un objet element,dans le second cas seuls les elements descendants sont selectionnesa pour resultat la liste des elements selectionnes−→ se manipule comme un tableau non mutablecette liste est dynamique
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 6
selections manipulations
1 // tous les elements de classe ’remarque ’2 var classList = document.getElementsByClassName("remarque");3 // tous les elements de classe ’droite ’ et ’
encadre ’4 var eltList1 = document.getElementsByClassName("droite encadre");5 // les memes elements6 var eltList2 = document.getElementsByClassName("encadre droite");78 // elements descendants de ’unique ’ de classe
’droite ’ et ’encadre ’9 var elt = document.getElementById("unique");
10 var eltLis3 = elt.getElementsByClassName("droite encadre");
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 7
selections manipulations
selection par balise
getElementsByTagName
la methode getElementsByTagName selectionne les elements dont labalise est fournie en parametre
se comporte comme getElementsByClassName.
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 8
selections manipulations
1 // tous les <div > du document2 var divList = document.getElementsByTagName("div");3 divList.length;45 // toutes les <img > descendants de ’section1 ’6 var sec1 = document.getElementById("section1");7 var sec1ImgList = sec1.getElementsByTagName("img");8 sec1ImgList [0]; // -> le premier element selectionne
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 9
selections manipulations
selection par selecteurs CSS
querySelectorAll
la methode querySelectorAll selectionne les elements retenus parle selecteur CSS fourni en parametre
peut s’invoquer sur l’objet document ou sur un objet element,dans le second cas seuls les elements descendants sont selectionnesa pour resultat la liste des elements selectionnes,cette liste n’est pas dynamique
querySelector
querySelector ne fournit que le premier element de la liste
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 10
selections manipulations
selection par selecteurs CSS
querySelectorAll
la methode querySelectorAll selectionne les elements retenus parle selecteur CSS fourni en parametre
peut s’invoquer sur l’objet document ou sur un objet element,dans le second cas seuls les elements descendants sont selectionnes
a pour resultat la liste des elements selectionnes,cette liste n’est pas dynamique
querySelector
querySelector ne fournit que le premier element de la liste
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 10
selections manipulations
selection par selecteurs CSS
querySelectorAll
la methode querySelectorAll selectionne les elements retenus parle selecteur CSS fourni en parametre
peut s’invoquer sur l’objet document ou sur un objet element,dans le second cas seuls les elements descendants sont selectionnesa pour resultat la liste des elements selectionnes,cette liste n’est pas dynamique
querySelector
querySelector ne fournit que le premier element de la liste
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 10
selections manipulations
selection par selecteurs CSS
querySelectorAll
la methode querySelectorAll selectionne les elements retenus parle selecteur CSS fourni en parametre
peut s’invoquer sur l’objet document ou sur un objet element,dans le second cas seuls les elements descendants sont selectionnesa pour resultat la liste des elements selectionnes,cette liste n’est pas dynamique
querySelector
querySelector ne fournit que le premier element de la liste
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 10
selections manipulations
1 // tous les elements <img > du document emboites dans un2 // element <div > de classe ’exercice ’3 var listElement = document.querySelectorAll("div.exercice img");45 // le premier de ces elements6 var premier = document.querySelector("div.exercice img");78 // tous les liens ciblant un ".pdf" descendants9 // de l’ element d’id ’exo1’
10 var elmt = document.getElementById("exo1");11 var listElem = elemt.querySelectorAll(’a[href$ =".pdf"]’);12 // ou encore13 var listElmBis = document.querySelectorAll(’#exo1 a[href$ =". pdf"]’);
NB :les selecteurs avec les pseudo-classes :link, :visited et despseudo-elements ne sont pas acceptesla liste resultat est toujours vide
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 11
selections manipulations
equivalences des selecteurs
document.getElementById("unId")≡
document.querySelector("#unId")
document.getElementsByClassName("uneClasse")≡
document.querySelectorAll(".uneClasse")
document.getElementsByTagName("uneBalise")≡
document.querySelectorAll("uneBalise")
mais les listes ne sont pas dynamiques avec querySelectorAll
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 12
selections manipulations
equivalences des selecteurs
document.getElementById("unId")≡
document.querySelector("#unId")
document.getElementsByClassName("uneClasse")≡
document.querySelectorAll(".uneClasse")
document.getElementsByTagName("uneBalise")≡
document.querySelectorAll("uneBalise")
mais les listes ne sont pas dynamiques avec querySelectorAll
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 12
selections manipulations
equivalences des selecteurs
document.getElementById("unId")≡
document.querySelector("#unId")
document.getElementsByClassName("uneClasse")≡
document.querySelectorAll(".uneClasse")
document.getElementsByTagName("uneBalise")≡
document.querySelectorAll("uneBalise")
mais les listes ne sont pas dynamiques avec querySelectorAll
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 12
selections manipulations
equivalences des selecteurs
document.getElementById("unId")≡
document.querySelector("#unId")
document.getElementsByClassName("uneClasse")≡
document.querySelectorAll(".uneClasse")
document.getElementsByTagName("uneBalise")≡
document.querySelectorAll("uneBalise")
mais les listes ne sont pas dynamiques avec querySelectorAll
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 12
selections manipulations
comparaison
querySelector(All) permet de selectionner plus simplementdes elements :
“la premiere image contenue dans l’element d’id section1”
var sec1 = document.getElementById("section1");var sec1ImgList = sec1.getElementsByTagName("img");
var img = sec1ImgList[0];
ouimg = document.getElementById("section1").getElementsByTagName("img")[0];
devient
var img = document.querySelector("#section1 img");
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 13
selections manipulations
comparaison
querySelector(All) permet de selectionner plus simplementdes elements :
“la premiere image contenue dans l’element d’id section1”
var sec1 = document.getElementById("section1");var sec1ImgList = sec1.getElementsByTagName("img");
var img = sec1ImgList[0];
ouimg = document.getElementById("section1").getElementsByTagName("img")[0];
devient
var img = document.querySelector("#section1 img");
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 13
selections manipulations
comparaison
querySelector(All) permet de selectionner plus simplementdes elements :
“la premiere image contenue dans l’element d’id section1”
var sec1 = document.getElementById("section1");var sec1ImgList = sec1.getElementsByTagName("img");
var img = sec1ImgList[0];
ouimg = document.getElementById("section1").getElementsByTagName("img")[0];
devient
var img = document.querySelector("#section1 img");
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 13
selections manipulations
comparaison
querySelector(All) permet de realiser des selections difficilesautrement :
“tous les elements de titre h1 et h2”
var lesTitres = document.querySelectorAll("h1,h2");
plutot que
var lesH1 = document.getElementsByTagName("h1");var lesH2 = document.getElementsByTagName("h2");
var lesTitres = lesH1.concat(lesH2);
qui ne conserve pas l’ordre d’apparition dans le document
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 14
selections manipulations
comparaison
querySelector(All) permet de realiser des selections difficilesautrement :
“tous les elements de titre h1 et h2”
var lesTitres = document.querySelectorAll("h1,h2");
plutot que
var lesH1 = document.getElementsByTagName("h1");var lesH2 = document.getElementsByTagName("h2");
var lesTitres = lesH1.concat(lesH2);
qui ne conserve pas l’ordre d’apparition dans le document
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 14
selections manipulations
comparaison
querySelector(All) permet de realiser des selections difficilesautrement :
“tous les elements de titre h1 et h2”
var lesTitres = document.querySelectorAll("h1,h2");
plutot que
var lesH1 = document.getElementsByTagName("h1");var lesH2 = document.getElementsByTagName("h2");
var lesTitres = lesH1.concat(lesH2);
qui ne conserve pas l’ordre d’apparition dans le document
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 14
selections manipulations
comparaison
mais querySelectorAll/querySelector moins efficaces queleurs equivalentsvoir ce comparatif des performances
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 15
selections manipulations
au programme...
1 selections
2 manipulations
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 16
selections manipulations
au programme...
1 selections
2 manipulations
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 17
selections manipulations
proprietes des elements
les objets elements obtenus par selection possedent des proprietesmanipulables :
attributscontenustyle css
il est possible d’agir sur ces proprietes apres selection de l’element
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 18
selections manipulations
manipuler les attributs
les attributs html sont des proprietes
meme nom, en minuscules, avec « conversion camelback »l’attribut class devient classNamela valeur peut etre string, number ou boolean selon attribut
on peut egalement utiliser getAttribute et setAttribute
dans ce cas la valeur est toujours une chaıne de caracteres
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 19
selections manipulations
manipuler les attributs
les attributs html sont des proprietesmeme nom, en minuscules, avec « conversion camelback »
l’attribut class devient classNamela valeur peut etre string, number ou boolean selon attribut
on peut egalement utiliser getAttribute et setAttribute
dans ce cas la valeur est toujours une chaıne de caracteres
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 19
selections manipulations
manipuler les attributs
les attributs html sont des proprietesmeme nom, en minuscules, avec « conversion camelback »l’attribut class devient className
la valeur peut etre string, number ou boolean selon attribut
on peut egalement utiliser getAttribute et setAttribute
dans ce cas la valeur est toujours une chaıne de caracteres
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 19
selections manipulations
manipuler les attributs
les attributs html sont des proprietesmeme nom, en minuscules, avec « conversion camelback »l’attribut class devient classNamela valeur peut etre string, number ou boolean selon attribut
on peut egalement utiliser getAttribute et setAttribute
dans ce cas la valeur est toujours une chaıne de caracteres
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 19
selections manipulations
manipuler les attributs
les attributs html sont des proprietesmeme nom, en minuscules, avec « conversion camelback »l’attribut class devient classNamela valeur peut etre string, number ou boolean selon attribut
on peut egalement utiliser getAttribute et setAttribute
dans ce cas la valeur est toujours une chaıne de caracteres
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 19
selections manipulations
manipuler les attributs
les attributs html sont des proprietesmeme nom, en minuscules, avec « conversion camelback »l’attribut class devient classNamela valeur peut etre string, number ou boolean selon attribut
on peut egalement utiliser getAttribute et setAttributedans ce cas la valeur est toujours une chaıne de caracteres
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 19
selections manipulations
1 // recuperation de l’ element d’id ’celebre ’2 var monImage = document.getElementById("celebre");3 // acces a son attribut ’alt’4 var texteAlt = monImage.alt;5 // modification d’attributs6 monImage.src = "img/joconde.jpg";7 monImage.alt = "la Joconde";8 // ajout d’une classe a celles existantes9 monImage.className = monImage.className + " flottantdroite";
exemple-propriete.html – exemple-propriete.js
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 20
selections manipulations
manipuler le contenu
innerHTMLla propriete innerHTML represente le contenu HTML d’un element
en lecture, sa valeur contient les balisesen modification, son contenu est interprete par le navigateur
textContentla propriete textContent represente le contenu textuel d’un element
en lecture, sa valeur ne contient pas les balises HTMLen modification, son contenu n’est pas interprete par lenavigateur
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 21
selections manipulations
manipuler le contenu
innerHTMLla propriete innerHTML represente le contenu HTML d’un element
en lecture, sa valeur contient les balisesen modification, son contenu est interprete par le navigateur
textContentla propriete textContent represente le contenu textuel d’un element
en lecture, sa valeur ne contient pas les balises HTMLen modification, son contenu n’est pas interprete par lenavigateur
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 21
selections manipulations
manipuler le contenu
innerHTMLla propriete innerHTML represente le contenu HTML d’un element
en lecture, sa valeur contient les balisesen modification, son contenu est interprete par le navigateur
textContentla propriete textContent represente le contenu textuel d’un element
en lecture, sa valeur ne contient pas les balises HTMLen modification, son contenu n’est pas interprete par lenavigateur
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 21
selections manipulations
manipuler le contenu
innerHTMLla propriete innerHTML represente le contenu HTML d’un element
en lecture, sa valeur contient les balisesen modification, son contenu est interprete par le navigateur
textContentla propriete textContent represente le contenu textuel d’un element
en lecture, sa valeur ne contient pas les balises HTMLen modification, son contenu n’est pas interprete par lenavigateur
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 21
selections manipulations
1 var element = document.getElementById("exemple");2 var htmlText = element.innerHTML;3 alert(htmlText); // -> "<p> Ceci est <strong >4 // mon </strong > contenu.</p>"56 var txt = element.textContent;7 alert(txt); // -> "Ceci est mon contenu"
...<div id="exemple">
<p>Ceci est<strong >mon</strong >
contenu.</p>
</div>...
1 // modifie le contenu HTML de l’ element et donc son ’affichage ’.2 // La balise <em> est interpretee .3 elemt.innerHTML = "un <em >autre </em > contenu";45 // modifie le contenu texte de l’ element et donc son ’affichage.’6 // Le texte <strong > N’est PAS interprete .7 elemt.textContent = "un contenu <strong >texte </strong >";
exemple-text-inner.html - exemple-text-inner.js
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 22
selections manipulations
agir sur les proprietes CSS
la propriete style d’un element permet de modifier lesproprietes CSS pour cet element
on utilise directement le nom de la propriete CSS apres« conversion camelback » si necessaire
font-size fontSizeborder-right-style borderRightStyle, etc.
les valeurs sont toujours des chaınes de caracteresles unites doivent etre precisees
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 23
selections manipulations
agir sur les proprietes CSS
la propriete style d’un element permet de modifier lesproprietes CSS pour cet elementon utilise directement le nom de la propriete CSS apres« conversion camelback » si necessaire
font-size fontSizeborder-right-style borderRightStyle, etc.
les valeurs sont toujours des chaınes de caracteresles unites doivent etre precisees
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 23
selections manipulations
agir sur les proprietes CSS
la propriete style d’un element permet de modifier lesproprietes CSS pour cet elementon utilise directement le nom de la propriete CSS apres« conversion camelback » si necessaire
font-size fontSizeborder-right-style borderRightStyle, etc.
les valeurs sont toujours des chaınes de caracteres
les unites doivent etre precisees
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 23
selections manipulations
agir sur les proprietes CSS
la propriete style d’un element permet de modifier lesproprietes CSS pour cet elementon utilise directement le nom de la propriete CSS apres« conversion camelback » si necessaire
font-size fontSizeborder-right-style borderRightStyle, etc.
les valeurs sont toujours des chaınes de caracteresles unites doivent etre precisees
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 23
selections manipulations
1 // selection de l’ element voulu2 var element = document.getElementById("exemple");34 // modification de certaine proprietes CSS5 // ’l’affichage ’ est immediatement impacte6 element.style.fontWeight = "bold";7 element.style.fontSize = "20px"; // ne pas oublier l’unite8 element.style.marginLeft = "50px";9 element.style.marginTop = "2%";
10 element.style.backgroundColor = "rgba (128 ,0 ,0 ,0.5)";1112 var l = element.style.marginLeft; // /!\ ’string ’ avec les unites13 var nouveauL = l + 100; // -> "50 px100" !!!14 var valNouvL = parseInt(l)+100; // -> 11015 element.style.marginLeft = valNouvL+"px"; //ne pas oublier l’unite !
exemple-modification-style.html
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 24
selections manipulations
acces aux valeurs du style
Attentionstyle ne permet pas d’acceder aux valeurs des proprietes definiesdans une feuille de style,acces seulement aux proprietes definies dans le document HTML ouvia style
il faut utiliser getComputedStyle
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 25
selections manipulations
style « calcule »
getComputedStyle
la methode getComputedStyle de l’objet window permet d’obtenirun objet regroupant l’ensemble des valeurs des proprietes CSSappliquees par le navigateur pour un element
les proprietes CSS
ont le meme nom que precedemmentpas de « raccourci » autorise : margin interdit, utiliser marginLeft, ...sont en lecture seules’expriment en unite absolue (px,...)
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 26
selections manipulations
style « calcule »
getComputedStyle
la methode getComputedStyle de l’objet window permet d’obtenirun objet regroupant l’ensemble des valeurs des proprietes CSSappliquees par le navigateur pour un element
les proprietes CSS
ont le meme nom que precedemmentpas de « raccourci » autorise : margin interdit, utiliser marginLeft, ...sont en lecture seules’expriment en unite absolue (px,...)
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 26
selections manipulations
style « calcule »
getComputedStyle
la methode getComputedStyle de l’objet window permet d’obtenirun objet regroupant l’ensemble des valeurs des proprietes CSSappliquees par le navigateur pour un element
les proprietes CSSont le meme nom que precedemmentpas de « raccourci » autorise : margin interdit, utiliser marginLeft, ...
sont en lecture seules’expriment en unite absolue (px,...)
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 26
selections manipulations
style « calcule »
getComputedStyle
la methode getComputedStyle de l’objet window permet d’obtenirun objet regroupant l’ensemble des valeurs des proprietes CSSappliquees par le navigateur pour un element
les proprietes CSSont le meme nom que precedemmentpas de « raccourci » autorise : margin interdit, utiliser marginLeft, ...sont en lecture seule
s’expriment en unite absolue (px,...)
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 26
selections manipulations
style « calcule »
getComputedStyle
la methode getComputedStyle de l’objet window permet d’obtenirun objet regroupant l’ensemble des valeurs des proprietes CSSappliquees par le navigateur pour un element
les proprietes CSSont le meme nom que precedemmentpas de « raccourci » autorise : margin interdit, utiliser marginLeft, ...sont en lecture seules’expriment en unite absolue (px,...)
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 26
selections manipulations
1 // selection de l’ element voulu2 var element = document.getElementById("exemple");34 // recuperation du style calcule5 var computed = window.getComputedStyle(element);6 var marge = computed.marginLeft; // avec les unites , en px7 var couleur = computed.backgroundColor; // rgb (... ,... ,...)89 // appliquer un facteur d’ echelle de 10% a la largeur :
10 var largeur = parseInt(computed.width); // recupere valeur calculee11 var nvLargeur = Math.floor(largeur *1.10);// ajoute 10%12 element.style.width = nvLargeur + "px"; // modifie style applique
exemple-modification-style.html - exemple-computed-style.js
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 27
selections manipulations
manipuler les proprietes CSS
!pour manipuler les valeurs des proprietes CSS d’unelement, on utilise
getComputedStyle pour acceder aux valeursstyle pour modifier les valeurs
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 28
selections manipulations
manipuler les proprietes CSS
!pour manipuler les valeurs des proprietes CSS d’unelement, on utilise
getComputedStyle pour acceder aux valeurs
style pour modifier les valeurs
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 28
selections manipulations
manipuler les proprietes CSS
!pour manipuler les valeurs des proprietes CSS d’unelement, on utilise
getComputedStyle pour acceder aux valeursstyle pour modifier les valeurs
Universite Lille 1 Technologies du Web – javascript : agir sur les elements 28