Option句の追加と削除
選択肢(option句)を追加する場合は
(1)selectのlengthプロパティの値を1増やす。
(2)valueプロパティとtextプロパティを設定する。
var sel = document.myForm.mySelect;
sel.length++;
sel.options[sel.length - 1].value = 3;
sel.options[sel.length - 1].text = ""横浜;
選択肢(option句)を削除する場合は「セレクト.options[選択肢の番号] = null」とする。
var sel = document.myForm.mySelect;
// 先頭の選択肢を削除
sel.options[0] = null;
DOMによるSelectボックス作成
DOMを利用して、配列のデータを元に選択ボックスを作成します。
選択ボックスには、選択時に何番目の項目が選択されたかを求めるonchangeイベントハンドラを定義します。
// 選択項目データ用配列
var item = new Array( "青木", "井上", "上田", "遠藤", "大木" );
var select;
// ページのロード時に呼び出される関数initをセット
window.onload = init;
// ページのロード時に呼び出される関数
function init(){
// select要素作成
select = document.createElement("select");
for( i=0; i
連動するSelectボックス
他のフォームコントロールの設定にあわせて、select要素の選択肢を変更します。
(1)通常のJavaScriptを使用
(手順)
(1)select要素からすべてのoption要素を削除する。
document.myForm.mySelect.options.length = 0;
(2)新しいoptionオブジェクトでotpion要素を埋めていく。
optionオブジェクトのコンストラクタ関数の構文は
var newOpt = new Option("text", "value", defaultFlag, selectedFlag);
text:ラベル文字列
value:送信される文字列
defaultFlag:デフォルトで選択される選択肢かどうか
selectedFlag:現在選択されているかどうか
var prefdb = new Object()
prefdb["01"] = [{value:"10", text:"札幌"},
{value:"20", text:"函館"},
{value:"30", text:"小樽"},
{value:"40", text:"釧路"}];
prefdb["02"] = [{value:"30", text:"盛岡"},
{value:"21", text:"宮古"},
{value:"49", text:"花巻"},
{value:"76", text:"遠野"},
{value:"14", text:"釜石"}];
prefdb["03"] = [{value:"64", text:"青森"},
{value:"15", text:"弘前"},
{value:"1", text:"八戸"},
{value:"10", text:"十和田"},
{value:"12", text:"三沢"}];
prefdb["04"] = [{value:"11", text:"仙台"},
{value:"35", text:"石巻"},
{value:"3", text:"気仙沼"},
{value:"97", text:"白石"}];
function setCities(sel) {
var city = sel.form.elements["city"];
// 以前のoption要素をクリア
city.options.length = 0;
// 選択された値をprefdbハッシュテーブルのインデックスとして使う
var choice = sel.options[sel.selectedIndex].value;
var db = prefdb[choice];
// デフォルトの最初の選択肢を挿入する
city.options[0] = new Option("選択して下さい", "", true, false);
if (choice != "") {
// ハッシュテーブルの項目を走査し、選択肢を追加する
for (var i = 0; i < db.length; i++) {
city.options[i+1] = new Option(db[i].text, db[i].value);
}
}
}
(2)DOMを使用
同様の処理を、W3C DOMを利用する事もできます。
(注意)
W3C DOMとIEでは、add()メソッドの2番目の引数に差異があり。
add()メソッドの2番目の引数は、追加されるoption要素の位置を指定。
・W3C DOM
(1) 既存のoption要素への参照
(2)null : リストの最後に追加
・IE (省略可)
(1)整数値 : 選択肢配列のインデックス
(2)省略または -1 : リストの最後に追加
function setCities(sel) {
var newElem;
// ブラウザ判定をして、add()メソッドの第2引数を決める
// IEの場合は「-1」その他はnull
var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
var city = sel.form.elements["city"];
// 以前の設定を空にする
while (city.options.length) {
city.remove(0);
}
// 選択された値をprefdbハッシュテーブルのインデックスとして使う
var choice = sel.options[sel.selectedIndex].value;
var db = prefdb[choice];
// デフォルトの最初の選択肢を挿入する
newElem = document.createElement("option");
newElem.text = "選択して下さい";
newElem.value = "";
city.add(newElem, where);
if (choice != "") {
// ハッシュテーブルの項目を走査し、選択肢を追加する
for (var i = 0; i < db.length; i++) {
newElem = document.createElement("option");
newElem.text = db[i].text;
newElem.value = db[i].value;
city.add(newElem, where);
}
}
}