Mon Labo Python

Comment ajouter un bouton en javascript pour rendre ma page interactive

Bouton javascript ajouté sur une page web pour la rendre interactive, étape clé pour une débutante en code

Je clique sur ce bouton gris pour la dixième fois, et strictement rien ne se passe. Pas un son, pas un changement de couleur, pas la moindre petite erreur réconfortante dans la console. Deux ans que je bricole avec le code dans mon coin, et je croyais avoir déjà vu toutes les variantes possibles du silence numérique. Apprendre à coder, dans mon cas, ça a surtout voulu dire apprendre à fixer un écran qui refuse de réagir. Ce soir pourtant, l'enjeu est différent : il ne s'agit plus d'un script qui tourne dans un terminal noir que je suis la seule à regarder, mais d'une vraie page, avec un vrai bouton, censée devenir interactive pour quelqu'un d'autre que moi. Le script en question calcule le prix des légumes, celui que j'avais écrit après une virée aux Halles Saint-Joseph où je me demandais pourquoi les tarifs changeaient autant d'un étal à l'autre, et il tourne très bien dans mon terminal, sauf que personne d'autre que moi n'ira jamais l'ouvrir là. Pour ça, il va falloir que je mette enfin les mains dans le DOM, cette chose qui me semblait jusqu'ici réservée aux gens qui savent vraiment ce qu'ils font en JavaScript.

Pourquoi un bouton reste-t-il muet sans JavaScript ?

On m'avait expliqué qu'un site web s'appuie sur trois couches, et que ça ressemble à une maison qu'on construit petit à petit : d'abord les murs, en HTML, puis la peinture et la décoration, en CSS, et enfin l'électricité, en JavaScript. Sans courant, la maison a beau être jolie sur le plan, aucune lumière ne s'allume quand on actionne l'interrupteur. Mon bouton, pour l'instant, c'est exactement ça : un joli rectangle gris, mais mort à l'intérieur.

Écran d'ordinateur affichant du code HTML simple pendant un apprentissage du javascript pour débutante

Le DOM, c'est la façon dont l'ordinateur regarde ma page HTML pour pouvoir la modifier en direct, sans recharger quoi que ce soit. Le mot sonnait comme un titre ronflant la première fois que je l'ai lu, mais c'est en réalité assez simple : c'est le pont entre mon bouton inerte et le code qui attend, immobile, de s'exécuter.

Avant, en Python, j'avais essayé de bricoler quelque chose d'un peu semblable pendant un été plus calme, une petite fenêtre qui s'ouvre, un bouton qui réagit. L'attirail nécessaire était tellement lourd pour un résultat aussi modeste que j'avais fini par laisser tomber. Ici, dans le navigateur, tout se passe à vue, ce qui est à la fois plus gratifiant et plus terrifiant : la moindre erreur de syntaxe, et plus rien ne bouge du tout.

Donner un nom à mon bouton

Dans mon fichier HTML, la première étape a été la plus facile : écrire la balise standard button et lui donner un identifiant, un petit 'id' unique, comme une adresse postale, pour que mon JavaScript puisse le repérer au milieu de tous les autres éléments de la page.

Le bouton est apparu, un petit rectangle gris planté au milieu d'une page blanche, et j'ai cliqué dessus. Une fois, dix fois, cent fois. Rien. Cette sensation de silence a quelque chose d'assez déstabilisant : on dirait donner un ordre à quelqu'un qui ne vous a pas encore entendu.

La frustration du bouton muet

La console de mon navigateur, que j'ai appris à ouvrir avec la touche F12 (mon nouveau meilleur ami et pire ennemi), affichait un 'Uncaught TypeError' qui ne voulait absolument rien dire pour moi. Je me suis redressée d'un coup sur ma chaise, qui a craqué sous le mouvement, pour relire le message une troisième fois, sans rien comprendre de plus. J'ai vérifié mes virgules, mes parenthèses, mes points-virgules, avec l'impression d'être une détective privée à la recherche d'une preuve invisible.

Message d'erreur javascript affiché dans la console du navigateur, situation fréquente pour une débutante en code

Une voisine qui s'est mise à l'apiculture sur son balcon ce printemps m'avait pourtant juré qu'il fallait se lancer tout de suite sur un vrai projet pour ne pas perdre la motivation. J'ai suivi son conseil à la lettre et voulu construire, dès les premiers jours, un site avec plusieurs pages, un formulaire et une animation que je ne savais même pas nommer, et je me suis noyée en une seule soirée avant de tout laisser de côté pendant un moment. C'est en repensant à un article sur apprendre le javascript pour débutant quand on vient du monde python que j'ai compris que je cherchais à appliquer une logique de terminal à une page qui, elle, vit au rythme du clic de l'utilisateur.

Le problème, c'est que j'essayais de forcer ce bouton à m'écouter sans lui avoir donné la bonne consigne. En JavaScript, impossible de simplement lui dire 'fais un truc'. Il faut d'abord aller le chercher dans la page, puis lui demander de rester attentif à un événement précis, comme un clic.

Le piège du onclick

Sur de vieux forums, j'avais vu qu'on pouvait glisser un attribut onclick directement dans le HTML, du genre

Articles connexes