重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

この度、当方のWebサイトで、郵便番号検索のようなシステムをJavaScriptで導入したいと思っています。
たとえば、000-0000と入力すれば「海外」と表示されるように、
フォームに数字を入力してEnterを押させると、数字によって別の結果が出るようにしたいのです。
当方、あまり知識は有りませんので、既に配布されているものを多少編集するだけでできるようなフリースクリプトがあると嬉しいです。

A 回答 (3件)

AJAX で問い合わせをすれば本格的ですが、データが数百件で即応性が問われないのでしたら、こんなのでどうでしょうか。



<script>
var data = {
'001':'太郎さんに貸し出し中',
'002':'花子さんに貸し出し中',
'003':'図書館にあります',
/* 以下同様にたくさん */
};
addEventListener('load',function(e){
/**/ document.forms['search'].addEventListener('submit',function(ev){
/**/ /**/ var no = ev.target.elements['no'].value;
/**/ /**/ var status = data[no];
/**/ /**/ status = status? status: '書籍が存在しません';
/**/ /**/ var span = ev.target.querySelector('.status');
/**/ /**/ while (span.firstChild) span.removeChild(span.firstChild);
/**/ /**/ span.appendChild( document.createTextNode(status) );
/**/ /**/ ev.preventDefault();
/**/ },false);
},false);
</script>

<form name=search>
書籍番号:<input type=text name=no><button type=submit>問い合わせ</button>
<span class=status></span>
</form>
    • good
    • 1

まず、動作環境をどの様に想定しているのか?


それから、データの更新はどうするのか?
処理速度等の操作性は、どの程度要求されるのか?
等々、いろいろな前提条件により、
提示内容も異なり、また困難であるという結論も・・・。

基本は、全てIF文で記述してはという事ですが、如何でしょうか。
データの保持方法,更新方法によっては、
実はこのIF文で記述が一番速く,ブラウザの種類をあまり意識する必要が少なく,
そして簡単だったりするのです・・・。

次にデータからイメージできる処理の形が、
索引編成ファイルをイメージした、
配列を用いた方法です。
配列を2つ用意して、片方をキーの配列,もう片方をデータの配列とし、
キーの配列で該当する値のインデックスを求め
次にそのインデックスを用いてデータの配列から
必要とする値を取得する。
この時、キーの値を昇順なりで並べておけば、
逐次検索(順番に検索)した時、探している値とキーを比べて,値が行き過ぎた場合、該当データなしと
早々に判断できまます。
また、総データ数がわかっている場合に、二分検索にて、まず真ん中辺りのキー値を拾い,判断し
その大小関係にて上半分または下半分を対象にすると
半分ずつに対象を絞る方法もありまます。
欠点は、配列を使う事により、
ブラウザの種類を多少意識する必要が発生する事。
あと、データ件数の制限があるかも・・・。(未確認)
長所は、データと処理が分離できる事。それだけ。逐次検索も二分検索も、IF文による直接記述でも可能。
ですので、データの保持,更新はどうするのかが、
処理方法を選定するのに重要な点なのです。
(データの加工をプログラムでするのなら、
そのプログラムでJavaScriptソース自体を加工しても
問題ない訳ですから・・・。)

あと蛇足で、データを1つの文字列変数として
サーチの命令を使う方法・・・。
これは、その様な考え方もあると知っている程度でいいでしょう。
内部規約として予約語みたいな物が必要となり、
特定の文字列がデータとして使えなくなるという欠点と、
なによりサーチの命令,文字列の抜き取りと
命令の種類が増える分、
余計にブラウザの種類を意識する必要が発生するので・・・。



結局,データの形式,保持,更新方法が不明な為、
既存のツールの提示は困難で・・・。
というか、やはりそれらを意識せずどれでも動く
簡単なのはと・・・。
「IF文でこつこつと記述するでしぃ~!?」

手間がかかって嫌な場合は、改めて
データについての詳細を提示してご質問下さい。
    • good
    • 0

大体40万件程度ありますので、それを処理するとなるとJavascriptだと重いような・・・


10Mくらいあるので、それをHTMLで書き出してJavascriptで処理するのは無謀かと。。

郵便番号のデータは郵政省のHPに行けばDLできます。

この回答への補足

ありがとうございます!
そもそも郵便番号を処理するわけでは有りません。
詳細は申し上げられないのですが、このようにイメージしていただければ嬉しいです。
------------------------------------------
私設図書館の蔵書検索システム
書籍番号:001 --太郎さんに貸し出し中
書籍番号:002 --花子さんに貸し出し中
書籍番号:003 --図書館にあります
------------------------------------------
処理するデータは200件~300件程度です。

補足日時:2004/12/21 19:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!