La méthode getElementById
La méthode JavaScript getElementById() permet de récupérer les informations d’une balise identifiée par son id.
Syntaxe
informations à récupérer = document.getElementById("nom");
- document représente la page HTML, plus précisément l’intérieur de la fenêtre du navigateur : la zone d’affichage sans la barre d’adresse et les boutons de navigation.
- nom désigne la valeur de l’attribut id d’une balise unique située dans la page.
Changer les styles CSS avec getElementById().style
Une fonctionnalité extrêmement puissante du JavaScript consiste à modifier les styles CSS avec la méthode getElementById().style.
Ci-dessous un script pour changer la couleur du texte en cliquant sur des boutons grâce à la propriété CSS color :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
function changeCouleur(nouvelleCouleur) {
document.getElementById("paragraphe").style.color = nouvelleCouleur;
}
</script>
</head>
<body>
<p id="paragraphe">Un peu de texte</p>
<button onclick="changeCouleur('blue');">blue</button>
<button onclick="changeCouleur('red');">red</button>
</body>
</html>
Résultat si on appuie sur le bouton red :

L’exemple suivant permet de changer la couleur d’arrière-plan d’une balise suite à un clic sur un bouton.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
function changefond() {
document.getElementById("titre").style.backgroundColor = "#FF0000";
}
</script>
</head>
<body>
<h1 id="titre">La couleur de fond du titre va changer au clic sur le bouton</h1>
<button onclick="changefond()">Change la couleur</button>
</body>
</html>
Beaucoup de menus réalisés en JavaScript utilisent la propriété visibility pour masquer ou démasquer des balises. Cet exemple pourrait également utiliser la propriété display avec les valeurs none et block.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
// La fonction qui affiche ou masque l'élément
function bascule(elem) {
// Quel est l'état actuel ?
let etat = document.getElementById(elem).style.visibility;
if (etat == "hidden")
document.getElementById(elem).style.visibility = "visible";
else
document.getElementById(elem).style.visibility = "hidden";
}
</script>
</head>
<body>
<input type="button" onclick="bascule('boite')" value="On/Off">
<div id="boite" style="visibility:hidden">
<h1>Coucou, je suis là !</h1>
<p>Et moi aussi !</p>
</div>
</body>
</html>
Les propriétés CSS qui suivent l’expression getElementById(elem).style s’écrivent en minuscules si la propriété est en un seul mot, et en « minusculeMajuscule » si la propriété est un mot composé. Par exemple, on écrira borderColor pour la propriété CSS border-color. On peut de cette manière modifier la plupart des propriétés CSS, ce qui laisse imaginer les immenses possibilités du JavaScript grâce aux modifications des CSS.
Toutes les propriétés CSS modifiables sur : http://www.w3schools.com/jsref/dom_obj_style.asp
La propriété innerHTML
Syntaxe
document.getElementById('exemple').innerHTML = "Code HTML à écrire";
La propriété innerHTML permet de remplacer complètement le contenu d’une balise identifiée par son attribut id. Pour faire simple, elle permet d’écrire à un endroit précis de la page, sans tout effacer contrairement à document.write.
Exemples simples
Cet exemple appelle une fonction qui effectue un calcul et inscrit le résultat dans la page :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p id="exemple">Cliquez sur le bouton et ce texte changera.</p>
<input type="button" value="clic" onclick="changetexte()">
<script>
function changetexte() {
document.getElementById("exemple").innerHTML = "Texte changé !";
}
</script>
</body>
</html>
Cet exemple appelle une fonction qui effectue un calcul puis inscrit le résultat dans une balise <p> :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p id="exemple"></p>
<script>
function superFonction(a, b) {
return a * b;
}
document.getElementById("exemple").innerHTML = superFonction(4, 3);
</script>
</body>
</html>
Effet Lightbox sans jQuery
Ici on peut éviter les accumulations de fenêtres popup en jouant avec la propriété CSS z-index. L’image agrandie est pré chargée sans être affichée grâce à la propriété CSS display: none.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
function zoom() {
document.getElementById("agrandir").innerHTML = "<img src='grande.jpg' style='position:absolute; top:50px; left:50px; z-index:1; cursor:pointer' onclick='dezoom()' title='Fermer'>";
}
function dezoom() {
document.getElementById("agrandir").innerHTML = "";
}
</script>
</head>
<body>
<img src="vignette.jpg" onclick="zoom()" style="cursor:pointer">
<p>New York Times Square New York Times Square New York Times Square New York Times Square New York Times Square New York Times Square New York </p>
<div id="agrandir"></div>
<img src="grande.jpg" style="display: none">
</body>
</html>
La machine à écrire de Michel Audiard
Pour finir en beauté, voici une petite mécanique assez complexe d’insertion de texte au sein de la balise HTML <q> avec un effet d’animation similaire à une « machine à écrire ».
- Les textes de Michel Audiard sont écrits caractère par caractère, grâce à la méthode setInterval() qui appelle la fonction machineEcrire() tous les dixièmes de seconde.
- La méthode charAt() retourne le caractère de la phrase à l’emplacement spécifié.
- message.length renvoie le nombre de caractères de message.
- message.substr(0,cour) extrait un certain nombre de caractères, précisé dans la variable cour, à partir du début de la chaine message.
- La méthode clearInterval() arrête le setInterval() quand le dernier caractère des citations est atteint.
- La balise de citation <q> ajoute les guillemets en début et fin de phrase.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
.ecrire {
color:#fff;
background-color:#000;
padding:3px;
font-weight:bold;
}
</style>
<script>
function machineEcrire() {
document.getElementById('citation').innerHTML = message.substr(0, cour) + "<span class='ecrire'>" + message.charAt(cour) + "</span>";
if (cour == message.length)
clearInterval(animation);
else
cour++;
}
const message = "Dans la vie, il faut être gentil avec les femmes ; même avec la sienne. Quand on mettra les cons sur orbite, t'as pas fini de tourner. Un intellectuel assis va moins loin qu'un con qui marche.";
let cour = 0;
const animation = setInterval("machineEcrire()", 100);
</script>
</head>
<body>
<q id="citation"></q>
</body>
</html>
Ce code affichera progressivement ces belles citations à l’écran :
