2008-09-17 19 views
6

In Notepad ++, ich schrieb eine JavaScript-Datei und etwas hat nicht funktioniert: eine Warnung musste angezeigt werden, wenn eine Schaltfläche geklickt wurde, aber es hat nicht funktioniert.JavaScript und warum Großbuchstaben manchmal arbeiten und manchmal nicht

Ich habe das Auto-Vervollständigen-Plugin verwendet, das mit Notepad ++ zur Verfügung gestellt wurde, das mich mit onClick präsentierte.

Als ich die Hauptstadt C zu einem kleinen c änderte, hat es funktioniert.

Also zuerst, wenn ich auf die Funktionen in der Autovervollständigung schaue, bemerkte ich eine Menge von Funktionen, die Großbuchstaben verwenden.

Aber wenn Sie getElementById zu getelementbyid ändern, erhalten Sie auch einen Fehler, und um die Dinge noch schlimmer zu machen, schreibt mein Handbuch aus der Schule alle Sachen mit Großbuchstaben, aber die Lösungen sind alle in kleinen Buchstaben.

Also was ist es mit JavaScript und seine selektive Natur in Bezug auf welche Funktionen können Großbuchstaben in ihnen haben und welche nicht?

Antwort

27

Javascript ist IMMER Groß- und Kleinschreibung, HTML ist nicht.

Es klingt, als ob Sie darüber reden, ob HTML-Attribute (z. B. onclick) die Groß- und Kleinschreibung beachten. Die Antwort ist, dass bei den Attributen nicht zwischen Groß- und Kleinschreibung unterschieden wird, sondern wie wir über das DOM darauf zugreifen. So können Sie dies tun:

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

oder:

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

aber durch das DOM müssen Sie den richtigen Fall verwenden. So funktioniert das:

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

Sie können dies aber nicht tun:

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

EDIT: CMS macht einen großen Punkt, dass die meisten DOM-Methoden und Eigenschaften in camelCase sind. Die eine Ausnahme, die in den Sinn kommt, sind Event-Handler-Eigenschaften, und diese werden im Allgemeinen als the wrong way to attach to events akzeptiert. Bevorzugen mit addEventListener wie in:

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

Es könnte gut sein, explizit zu erwähnen, dass Attribute und Eigenschaften nicht eng miteinander verknüpft sind. Das Wertattribut einer Eingabe gibt nur an, was es bei der Initialisierung sein soll, während die Eingabeeigenschaft den aktuellen Wert hat. data- * -Attribute sind mit elem.dataset [*] verknüpft, aber anders als das value-Attribut wird das Dataset auf beide Arten synchronisiert (wenn es auf der JavaScript-Seite eingestellt ist, wird das Attribut auf die von der toString-Methode zurückgegebenen Attribute gesetzt). Einige Dinge wie das checked-Attribut können die jeweilige Eigenschaft widerspiegeln, die benötigt wird, damit css die Dinge korrekt formatieren kann. –

1

JavaScript-API-Methoden sind fast alle mit lowerCamelCase Namen genannt, und JavaScript ist case-sensitive

1

Javascript sollte immer Fall empfindlich sein, aber ich habe Fälle gesehen, in Internet Explorer, wo es Großbuchstaben für einige Funktionsnamen toleriert, aber nicht für andere. Ich denke, dass es auf Funktionen beschränkt ist, die es auch in Visual Basic gibt, da es zwischen den Interpreten seltsame Inzucht gibt. Natürlich sollte dieses Verhalten vermieden werden, es sei denn, Sie beabsichtigen natürlich Code zu erstellen, der nur in einem Browser läuft :)

5

Ein paar Objekte sind IE sind nicht immer Groß-und Kleinschreibung, einschließlich einige/am meisten/alle ActiveX - warum beide XHR.onReadyStateChange und XHR.onreadystatechange gut funktionieren würde in IE5 oder IE6, aber nur letztere funktionieren würde, mit dem nativen XMLHttpRequest Objekt in IE7, FF usw.

Aber eine schnelle Referenz für " Standard" API Gehäuse:

  • VERSALIEN - Konstanten (in der Regel symbolisch, da const nicht global unterstützt wird)
  • Aktivierte - Klassen/Objektfunktionen
  • Kleinbuchstaben - Ereignisse
  • camelcase - alles andere

Keine 100% garantiert. Aber im Großen und Ganzen ist das genau.

Verwandte Themen