IEでのjavascript変数名の注意点

最近は開発用のブラウザではFirefoxをデフォルトにしているため、IEでのjavascriptの動作エラーに気づかずに後で手間取ることが多くなっています。(自分が)

最近ではフォームのsubmitボタンに画像を用いるケースが増えており、onclickでsubmitというパターンが増えている。

基本的には、以下のようにすればOKです。

<input type=”image” src=”[ボタン画像]” border=”0″ onClick=”this.form.submit();”>

ここでハマったパターンを紹介します。

先に述べたように私はFirefoxで開発を行っているのですが、form内の変数”delete”をsubmit時に1をセットして、画面遷移するプログラムがIE6では動作しなかったのです。(下記参照)

<FORM action=”[CGI名]” method=”post”>

<input type=hidden name=delete>

– -[中略] —

<input type=”image” src=”[ボタン画像]” border=”0″ onClick=”this.form.delete.value=1; this.form.submit();”>

– -[中略] —

</FORM>

色々調べて何が原因だったかというと、どうやらCGI変数名の”delete“がjavascriptの予約語にあったため、IEで変数”delete“に1がセットされず動作しなかったようなのです。変数名を”delete1″としたら動いたもので。。

「javascriptの予約はCGI変数名として使わない」という開発ルールを追加しようと思います。