PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli du 23/07/2013

⇐ retour index

Note : JS

dimanche 19 juillet 2015 à 19:56

Et merde…

Donc en JS on ne peut pas créer une fonction qui porte le même nom qu’un élément HTML avec un « name="" ».

J’avais ça :

<input onclick="annuler();" name="annuler" value="Annuler" type="button"/>


Ça marchait pas : le nom « annuler » était déjà réservé par le input, dans le « name="" ».
Mon code a fonctionné quand j’ai retiré cet attribut.

Je ne savais pas que le HTML et le JS partageaient un espace de nom communs. Et ça me l’a fait dans Firefox, Chromium et Opera Presto…



Tiens, je suis content de voir que je suis pas le seul à me l'être pris dans les dents... L'explication est fournie dans le lien qui suit.

C'est mal gaulé le JS : il y a 16 ans de ça, c'était une fonctionnalité censée simplifier la vie. Note en passant : c'est vrai pour tous les element id ...


http://stackoverflow.com/questions/9158238/why-js-function-name-conflicts-with-element-id
(Permalink)



Et si je vais sur un site permettant de poster un commentaire acceptant le html, j'ai bien envie de tester :
"Juste un test <span id="getElementById">trololo</span>" xD
(Permalink)



ARG ! Bon à savoir si vous avez un javascript qui ne se comporte pas comme prévu: javascript et html se partagent le même espace de nommage entre les noms des fonctions javascript et les valeurs d'attributs name/id d'html.  Doh ><
(Permalink)