2008-09-17 12 views
6

En Notepad ++, estaba escribiendo un archivo JavaScript y algo no funcionó: tenía que mostrarse una alerta cuando se hacía clic en un botón, pero no funcionaba.JavaScript y por qué las letras mayúsculas a veces funcionan y otras no

He utilizado el complemento de autocompletar proporcionado con Notepad ++, que me ha presentado onClick.

Cuando cambié la capital C a una pequeña c, funcionó.

En primer lugar, al observar las funciones en la autocompletación, noté muchas funciones con mayúsculas.

Pero cuando cambia getElementById a getelementbyid, también obtiene un error, y para empeorar las cosas, mi manual de la escuela escribe todo con letras mayúsculas, pero las soluciones están todas hechas en letras minúsculas.

Entonces, ¿qué pasa con JavaScript y su naturaleza selectiva hacia las funciones que pueden tener letras mayúsculas en ellos y cuáles no?

Respuesta

27

, JavaScript es SIEMPRE mayúsculas y minúsculas, no se permite HTML.

Parece que está hablando de si los atributos html (por ejemplo, onclick) son o no sensibles a las mayúsculas y minúsculas. La respuesta es que los atributos no distinguen entre mayúsculas y minúsculas, pero la forma en que accedemos a ellos a través del DOM es. Por lo tanto, usted puede hacer esto:

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

o:

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

sino a través del DOM debe utilizar el formato correcto. Por lo que este funciona:

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

pero no se puede hacer esto:

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

EDIT: CMS hace un gran punto de que la mayoría de los métodos DOM y propiedades están en camelCase. La única excepción que viene a la mente son las propiedades del controlador de eventos, y generalmente se aceptan como the wrong way to attach to events. Prefiero usar addEventListener como en:

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

Podría ser bueno mencionar explícitamente que los atributos y propiedades no están estrictamente relacionados. El atributo de valor de una entrada solo especifica qué debería ser cuando se inicializa, mientras que la propiedad de entrada tiene el valor actual. los atributos data- * están vinculados a elem.dataset [*], pero a diferencia del atributo de valor, el conjunto de datos se mantiene sincronizado en ambos sentidos (cuando se establece en el lado de javascript, el atributo se establece en lo que devuelva el método toString). Algunas cosas, como el atributo checked, pueden reflejar la propiedad respectiva, que es necesaria para que CSS diseñe las cosas correctamente. –

1

métodos de la API de JavaScript son casi todos llaman con nombres lowerCamelCase, y JavaScript entre mayúsculas y minúsculas

1

Javascript debe ser siempre entre mayúsculas y minúsculas, pero he visto casos en los Internet Explorer donde tolera todas las mayúsculas para algunos nombres de funciones pero no otros. Creo que está limitado a las funciones que también existen en Visual Basic, ya que existe cierta endogamia extraña entre los intérpretes. Claramente, este comportamiento debe evitarse, a menos que, por supuesto, su intención sea crear un código que solo se ejecute en un navegador :)

5

Algunos objetos IE no siempre distinguen entre mayúsculas y minúsculas, incluyendo algunos/la mayoría/todos los ActiveX - ¿por qué tanto XHR.onReadyStateChange y XHR.onreadystatechange funcionaría bien en IE5 o IE6, pero sólo este último trabajaría con el XMLHttpRequest objeto nativo en IE7, FF, etc.

Pero, una referencia rápida para " estándar" carcasa API:

  • MAYÚSCULAS - Constantes (generalmente simbólicos, ya const no es compatible a nivel mundial)
  • mayúsculas que - Funciones de clases/objetos
  • minúsculas - Eventos
  • camelCase - todo lo demás

No hay garantías del 100%. Pero, en términos de la mayoría, esto es exacto.

Cuestiones relacionadas