JavaScript и почему заглавные буквы иногда работают, а иногда нет

StackOverflow https://stackoverflow.com/questions/87934

Вопрос

В Notepad++ я писал файл JavaScript, и что-то не сработало:при нажатии кнопки должно было отображаться предупреждение, но оно не работало.

Я использовал плагин автозаполнения, поставляемый с Notepad++, который предоставил мне onClick.

Когда я сменил столицу C до маленького c, это сработало.

Итак, прежде всего, просматривая функции автодополнения, я заметил множество функций, использующих заглавные буквы.

Но когда ты меняешься getElementById к getelementbyid, вы также получаете ошибку, и, что еще хуже, в моем школьном справочнике все написано заглавными буквами, но все решения написаны маленькими буквами.

Так что же такого в JavaScript и его избирательном характере в отношении того, какие функции могут содержать заглавные буквы, а какие нет?

Это было полезно?

Решение

Javascript - это ВСЕГДА чувствителен к регистру, html — нет.

Звучит так, будто вы говорите о том, являются ли атрибуты HTML (например,onclick) чувствительны или не чувствительны к регистру.Ответ заключается в том, что атрибуты не чувствительны к регистру, а способ доступа к ним через DOM.Итак, вы можете сделать это:

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

или:

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

но через DOM вы должны использовать правильный регистр.Итак, это работает:

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

но вы не можете сделать это:

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

РЕДАКТИРОВАТЬ:CMS подчеркивает, что большинство методов и свойств DOM находятся в верблюдЧехол.Единственным исключением, которое приходит на ум, являются свойства обработчика событий, которые обычно считаются неправильный способ привязки к событиям в любом случае.Предпочитаю использовать addEventListener как в:

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

Другие советы

Некоторые объекты в IE не всегда чувствительны к регистру, включая некоторые/большинство/все элементы ActiveX. Почему оба XHR.onReadyStateChange и XHR.onreadystatechange будет нормально работать в IE5 или IE6, но только последний будет работать с родным XMLHttpRequest объект в IE7, FF и т. д.

Но краткая справка для "стандартный" Корпус API:

  • ВЕРХНИЙ РЕГИСТР - Константы (вообще символические, т.к. константа не поддерживается глобально)
  • С заглавной буквы - Классы/функции объектов
  • строчные буквы - События
  • верблюдЧехол - все остальное

Никаких 100% гарантий.Но с точки зрения большинства это верно.

Почти все методы JavaScript API вызываются с помощью нижнийCamelCase имена, а JavaScript чувствителен к регистру

Javascript должен всегда учитывайте регистр, но я видел случаи в Internet Explorer, когда он допускал все прописные буквы для некоторых имен функций, но не для других.Я думаю, что это ограничивается функциями, которые также существуют в Visual Basic, поскольку между интерпретаторами существует некоторое странное родство.Очевидно, что такого поведения следует избегать, если, конечно, вы не намерены создавать код, который работает только в одном браузере :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top