JavaScript と大文字が機能する場合と機能しない場合がある理由
-
01-07-2019 - |
質問
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 メソッドとプロパティが キャメルケース. 。思い浮かぶ 1 つの例外はイベント ハンドラー プロパティであり、これらは一般に次のように受け入れられています。 イベントへの間違った結び方 ともかく。使用することを好む addEventListener
次のように:
document.getElementById('divYo').addEventListener('click', modifyText, false);
他のヒント
いくつかのオブジェクト (一部/ほとんど/すべての ActiveX を含む) IE では常に大文字と小文字が区別されるわけではありません。なぜ両方とも区別されるのでしょうか。 XHR.onReadyStateChange そして XHR.onreadystatechange IE5 または IE6 では正常に動作しますが、ネイティブでは後者のみが動作します。 XMLHttpRequest IE7、FFなどのオブジェクト。
ただし、「」のクイックリファレンス標準" API のケーシング:
- 大文字 - 定数 (一般的には記号的です。 定数 グローバルではサポートされていません)
- 大文字で表記 - クラス/オブジェクト関数
- 小文字 - イベント
- キャメルケース - ほかのすべて
100%の保証はありません。しかし、大多数の意見から言えば、これは正確です。
JavaScript API メソッドはほとんどすべて次のように呼び出されます。 小キャメルケース 名前、JavaScript では大文字と小文字が区別されます
JavaScript すべき 常に大文字と小文字を区別しますが、Internet Explorer では、一部の関数名ではすべて大文字が許容されるが、他の関数名では許容されないケースを見たことがあります。インタプリタ間に奇妙な近親交配があるため、これは Visual Basic にも存在する関数に限定されると思います。もちろん、1 つのブラウザでのみ実行されるコードを作成することが目的でない限り、この動作は避けるべきです:)