javascript

今日は、javascriptでおもっきしはまった。
なんか、いつもはまってる気がするが、まぁいい。


しかも、来週クレジットカードの引き落としなのに、
ネットバンクから口座に振り込もうと思ってたら、忘れてた。
しかたないので、月曜の朝に手数料払って入金してきます。
会社の近くにATMがないのはつらい。


さて、javascriptですが、正直仕事では使いたくないですね。
いろいろできるので、便利なんですが、
複雑な処理を書くとバグつぶしが大変すぎます。
どこでエラーが出てるのかさえわからないので、
時間がいくらあっても足りません。


まず、ひとつめは文字コードです。
サーバーはutf8で表示はshift_jisなんですが、
表示はshift_jisで行うので、
当然javascriptファイルもshift_jisです。
ところが、cgiと一緒にutf8に変換されていましたorz。
javascriptは別ファイルにして、
さらに動作確認済みのものだったので、
気づくのに時間がかかりました。


次は、Submitです。
画面に自動更新機能をつけることになって、
最初はmetaタグでいくつもりでいましたが、
そうすると、仕様を満たせないことに気づいて、
bodyタグのOnLoadイベントで関数を呼んで、
setTimeoutで一定時間経過後にSubmitするようにしたところ、
うまくいきませんでした。
原因は、OnLoadで関数を呼ぶときに、
this.formでフォーム名を渡していたことです。
よく考えると当然ですよね。
bodyがロードされた時に、
formがロードされているはずありません。
なので、document.formnameを引数で渡すことにしました。


最後に、一番厄介だったのは、class属性とid属性です。
javascriptでdivのwidthを変更する処理があるのですが、
class属性のwidthを変更してもなにも起こらない。
ところが、id属性を作ってwidthを変更するとうまくいきました。
class属性とid属性にこんな違いがあったとは。
javascriptはわからないことだらけだ。