Javascript Cart というものを作成しました。
既に使い方について説明した記事があります。
Javascript だけで動作する簡易ショッピングカート Javascript Cart | ウェブル
私は今まで PHP ばかり触ってきたので、今回のような Javascript だけっていうのは初めての体験でした。正直なところ、触るのは面倒だったし、PHP でやればいいのに、なんて思ってはいましたが、一日中触ってみて、Javascript にハマッてしまいました。
ですが、Javascript が楽しいという話をしても何も意味がないので、今回は Javascript Cart を作る上で遭遇したバグについてまとめていきたいと思います。ちなみに制作にあたって jQuery を使っていますので、Javascript の話の中に jQuery が普通に出てきますのでよろしくお願いします。
Javascript のデバッグ
Javascript のデバッグは Firebug が便利です。
Firebug を起動して、コンソールを有効にすることでエラーが発生している行などが分かります。
私は Javascript を本格的に触るまでは、適当な場所で alert() して、ここまでの行は問題ないな!なんていうテストをしていました…。
要素内のテキストを取得する text() の IE シリーズでの挙動
jQuery で要素内のテキストを取得することができます。
例えば以下のようなタグがあるとします。
これは、Javascript の方で以下のように書けば、テキストという部分だけを取得することができます。
通常こうすれば、テキストという文字が取得できるとは思うんですが、IE シリーズで実行するとテキスト という、半角スペースが入った値が返ってきます。
とても繊細な処理、例えば文字列と文字列の比較を行う場合、半角スペースが入っていると問題が発生してきますね。
解決策ですが、私の場合は以下のように文字列内の半角スペースを全て除去するようにしています。
1
| hoge.replace(/ /g, ""); |
textarea 内を Javascript や Ajax などで動的に文字列の書き変えを行うと改行コードが消滅する
textarea の中に改行を含めた文章を入れますと、改行コードが全て吹っ飛びます。
その場合の解決策が textarea ごと書き変えるというものがあります。
また、他の方からお聞きしたんですが、textarea に ja を設定すれば良いのではないかという話ですが、試す気力がないのでやっていません。次同じ問題にぶつかったら真っ先に試します。
Cookie の限度
Javascript とは関係のない話になってしまいますが、Cookie にも制限があります。配列にしてデータを入れたとしても、ある程度量が多くなるとエラーでページにアクセスできなくなってしまいます。
解決策としては、Cookie に情報を書き込む段階で20配列程度で、これ以上追加できませんと表示することです。
これくらいですかね。
他にもいろいろとバグがありましたが、わざわざ報告するほどでもないので割愛させていただきます。
誰かの参考になれば幸いです。