使えないメソッド名があることを知りました
ある JavaScript の入門サイト見ていて写経してたんですが、どうやっても動いてくれない・・・。具体的にはボタンのクリックイベントだったのですが、サイトとソースコードを見比べても合っているんですよ!なんでダメなの??
困ったのがエラー発生するわけではなく、無反応
ということだったので、調べても欲しい解決策をすぐに見つけられなかったことでした。調べるキーワードが無い・・・。
目次
答え
仕様で、予約されているメソッド名は使えない
ということを知りました。知らなかったorz。ちなみに Google Chrome で試していました。
サンプルコード
index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>コマンドラインテスト</title> <script type="text/javascript" src="scripts.js"></script> </head> <body> <input type="button" value="test" onclick="click()"> <input type="button" value="test" onclick="onclick()"> <input type="button" value="test" onclick="myclick()"> </body> </html>
scripts.js
function click() { alert("hello"); } function onclick() { alert("hello"); } function myclick() { alert("hello"); }
実行結果
1つ目のボタンクリック(click()
)
無反応、悲しい・・・。
2つ目のボタンクリック(onclick()
)
こちらはエラーメッセージが出てくれました。エラーという反応をしてくれて嬉しかったです。でも範囲エラーと言われて、あ~予約語使っちゃったからねゴメンね。という結び付けは、初見には不可能な気が・・・。
Uncaught RangeError: Maximum call stack size exceeded at HTMLInputElement.onclick (index.html:10) at HTMLInputElement.onclick (index.html:10) at HTMLInputElement.onclick (index.html:10) at HTMLInputElement.onclick (index.html:10) at HTMLInputElement.onclick (index.html:10) at HTMLInputElement.onclick (index.html:10) at HTMLInputElement.onclick (index.html:10) at HTMLInputElement.onclick (index.html:10) at HTMLInputElement.onclick (index.html:10) at HTMLInputElement.onclick (index.html:10)
3つ目のボタンクリック(myclick()
)
hello
というアラートが無事に出てくれました!嬉しい!