Question

Dans Notepad ++, j'écrivais un fichier JavaScript et quelque chose ne fonctionnait pas: il fallait afficher une alerte lorsqu'un bouton était cliqué, mais cela ne fonctionnait pas.

J'ai utilisé le plug-in de saisie semi-automatique fourni avec Notepad ++, qui m'a présenté onClick .

Lorsque j'ai remplacé le C majuscule par un petit c , cela a fonctionné.

Tout d’abord, lorsqu’on a examiné les fonctions de la saisie automatique, j’ai remarqué de nombreuses fonctions utilisant des majuscules.

Mais lorsque vous remplacez getElementById par getelementbyid , vous obtenez également une erreur et, pour aggraver les choses, mon manuel de l'école écrit tous les éléments en majuscules, mais le les solutions se font toutes en petites lettres.

En quoi consiste donc JavaScript et son caractère sélectif envers lequel des fonctions peuvent contenir des lettres majuscules et qui ne le peuvent pas?

Était-ce utile?

La solution

Javascript est TOUJOURS sensible à la casse, mais pas le code HTML.

Vous semblez penser que les attributs html (par exemple, onclick) sont ou non sensibles à la casse. La réponse est que les attributs ne sont pas sensibles à la casse, mais à la manière dont nous y avons accès via le DOM. Donc, vous pouvez faire ceci:

<div id='divYo' onClick="alert('yo!');">Say Yo</div> // Upper-case 'C'

ou:

<div id='divYo' onclick="alert('yo!');">Say Yo</div> // Lower-case 'C'

mais à travers le DOM, vous devez utiliser le cas correct. Donc ça marche:

getElementById('divYo').onclick = function() { alert('yo!'); }; // Lower-case 'C'

mais vous ne pouvez pas faire ceci:

getElementById('divYo').onClick = function() { alert('yo!'); }; // Upper-case 'C'

EDIT: CMS insiste sur le fait que la plupart des méthodes et propriétés DOM sont dans camelCase . Les propriétés de gestionnaire d’événements sont généralement considérées comme comme mode de connexion incorrect. aux événements de toute façon. Préférez utiliser addEventListener comme dans:

document.getElementById('divYo').addEventListener('click', modifyText, false);

Autres conseils

Certains objets IE ne sont pas toujours sensibles à la casse, y compris certains / la plupart / tous les ActiveX - pourquoi les deux XHR.onReadyStateChange et XHR.onreadystatechange fonctionnent-ils? Très bien dans IE5 ou IE6, mais seul ce dernier fonctionnerait avec l'objet natif XMLHttpRequest dans IE7, FF, etc.

Mais, référence rapide pour " standard " Boîtier de l'API:

  • UPPERCASE - Constantes (généralement symboliques, car const n'est pas globalement pris en charge)
  • Mise en majuscule - Fonctions de classe / d'objet
  • en minuscule - Événements
  • camelCase : tout le reste

Pas de garantie à 100%. Mais, à la majorité, c'est exact.

Les méthodes de l'API JavaScript sont presque toutes appelées avec des noms lowerCamelCase , et JavaScript est sensible à la casse.

Javascript devrait toujours être sensible à la casse, mais j'ai déjà vu des cas dans Internet Explorer où il tolère toutes les majuscules pour certains noms de fonctions mais pas pour d'autres. Je pense que cela se limite aux fonctions qui existent également dans Visual Basic, car il existe une étrange consanguinité entre les interprètes. Il est clair que ce comportement doit être évité, sauf si bien sûr votre intention est de créer du code qui ne fonctionne que dans un seul navigateur:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top