Javascript tips

javascirpt関連のちょっとした情報紹介です。
個人のwebサイトではあまり役立たない話かも。

ローカルストレージ

javascriptでローカルPC上に情報を保持する方法には、ながらくcookieが使われてきました。
しかし最近の高機能なwebサイトでは、ちょっと対応が難しくなってきています。

そんな状況の解決策として、HTML5 規格では「DOM Strage」という仕様が策定されたのですが、
「まあ、対応ブラウザがシェア90%くらいに普及しないと使えないよな...」と諦めモードでした。

ところが、なんとIE 6で動作するDOMストレージのライブラリが公開されている! というではありませんか。

実際に使うためには、ブラウザ判定を行う必要があったりするので
個人サイトではそこまで必要か?ってなっちゃうと思いますが。

ビジネス用サイトでは まだまだIE 6に対応しないとクレームになったりしちゃうので、こういった解決策は助かります。

そう言えば、昔、私がローカルデータ保存のために取った方法は...

管理用の小さい別ウィンドウを開き、display: none;の領域にデータを書き込んでおく、というものでした。
IE 5の頃ですが、仕事とは言え、今思いだしても良くあそこまでやったもんだと思います...

文字判定と全角半角変換

自作ライブラリ?の紹介です。 オリジナルは2000年ころに作ったもの。
今となってはあまり価値はありませんが、ご自由に使ってください。

汎用
lazylib_text_dom 対象が文字列ならDOM idとみなしてDOMオブジェクトを取得する.

@param target Sting (DOM id)
@return DOM object
URL文字列操作
lazylib_text_crop_after 文字列から、指定文字以降を除去する(実装).

@param url String 文字列
@param url String 文字指定(?、#など)
@return String 変換後(削除後)の文字列
lazylib_text_remove_urlname URL文字列から #以降(jump先)を除去する.

@param url String URL文字列
@return String 変換後のURL文字列
lazylib_text_remove_urlparam URL文字列から ?以降(cgiパラメータ)を除去する.

@param url String URL文字列
@return String 変換後のURL文字列
文字変換
lazylib_text_convert_zh_space 文字列に含まれる全角スペースを半角へ変換する.

@param text String 変換前の文字列
@return String 置換後の文字列
lazylib_text_convert_hz_kkana 文字列に含まれる半角カナを全角カタカナへ変換.

@param text String 変換前の文字列
@return String 置換後の文字列
lazylib_text_convert_hz_hkana 文字列に含まれる半角カナを全角ひらがなへ変換.

@param text String 変換前の文字列
@return String 置換後の文字列
lazylib_text_convert_hz_number 数字を半角から全角へ変換する.

@param text String 変換前の文字列
@return String 置換後の文字列
lazylib_text_convert_zh_number 数字を全角から半角へ変換する.

@param text String 変換前の文字列
@return String 置換後の文字列
lazylib_text_convert_kanachouon_zh カナ長音「ー」を半角ハイフン「-」に変換する.
(半角カナの長音ではなく、ハイフンへ変換する点に注意)

@param text String 変換前の文字列
@return String 置換後の文字列
lazylib_text_convert_hz_alpha 半角英字を全角へ変換する.

@param text String 変換前の文字列
@return String 置換後の文字列
lazylib_text_convert_zh_alpha 全角英字を半角へ変換する.

@param text String 変換前の文字列
@return String 置換後の文字列
lazylib_text_convert_hz_alnum 半角英数字を全角へ変換する.

@param text String 変換前の文字列
@return String 置換後の文字列
lazylib_text_convert_zh_alnum 全角英数字を半角へ変換する.

@param text String 変換前の文字列
@return String 置換後の文字列
簡易文字判定
lazylib_text_is_h_number 指定した文字列が半角の数値(記号を含まない整数)かどうか.

@param text String 調査対象の文字列
@return boolean 数値[0-9]*の場合true
lazylib_text_is_h_alnum 指定した文字列が半角英数字のみかどうか.

@param text String 調査対象の文字列
@return boolean 半角英数の場合true

それぞれの関数のソース自体は短いので、直接コードを読めば詳細は分かると思います。

日付入力用ドロップ

自作ライブラリその2。 オリジナルは2003年ころだと思いますが、いろんな案件で使い続けて今に至ります。

最近ではカレンダーUIで日付を入力できるライブラリなんかもあったりしますが、
昔は年月日をドロップリストで入力するのが常でした。

その際、面倒なのが「月ごとに選択できる日にち(末日)を変える」処理なんですよね。

汎用
lazylib_dom 対象が文字列ならDOM idとみなしてDOMオブジェクトを取得する.

@param target Sting (DOM id)
@return DOM object
lazylib_select_value selectタグの現在の選択値を取得する.

@param target Sting (DOM id) またはDOMオブジェクトを直接渡しても可
@return String 選択なしなどの場合、空文字列を返します。
日付関連
lazylib_get_lastday 指定した年月の月末日を取得する.

@param y 西暦年
@param m 月 (1~12)
@return Number 末日
select optionの要素操作
lazylib_display_select_options セレクトタグの指定範囲のoptionを表示し、他を隠す.

@param target Sting (selectのDOM id または DOMオブジェクト本体)
@param from Number 表示開始インデックス
@param to Number 表示終了インデックス (個数ではない)
@return Number 表示変更後のselectedIndex

こちらのライブラリは説明というか、サンプルコードが必要でしょうかね。。。

サンプルその1。 ボタンをクリックすると、option要素の数が変わります。
← <select id="test">


サンプルその2。 年月日入力でよくある形ですね。
年  月 
日にちの部分は ↑ <select id="day">
あらかじめこんな感じの関数を作っておいて、
年と月のonchangeイベントに設定してあります。

あまりないと思いますが。。。IE4や特殊な海外製ブラウザなどでは、
ソースコード内の日本語コメントが原因で誤動作することがあるようです。

ダウンロードした .jsファイルは、コメントを削除して使用した方が良いかも知れません。


**** presented by lazylicoあっとマークmsb.biglobe.ne.jp ****