人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javascript初心者です。WEBのフォームについて教えてください
http://www.geocities.co.jp/SiliconValley/4334/unibon/asp/selectexample.html
のフォームとスクリプトを流用してプログラムを作っています。
この例文と同じことを3回繰り返しでやりたいとおもっています( Pref1,pref2,pref3 とcity1、city2、city3をresult.aspに渡す)
この場合、例文中の関数内のpref、cityに相当する部分に、pref1,2,3やcity1,2,3を引数(?)として渡すことは可能でしょうか。それとも例文の関数を、pref1,2,3毎に作っておく必要があるのでしょうか
説明がうまくなくて申し訳ありません。

●質問者: SlowLife
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ASP JavaScript Web スクリプト プログラム
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● F-15X
●35ポイント

function funcMain(b,pref,city) {

    if (pref.selectedIndex == 0) {

        city.length = 1;

        city.selectedIndex = 0;

    } else {

        if (b) {

            city.length = 1;

            city.selectedIndex = 0;

        }

        var city = cities[pref.selectedIndex - 1];

        city.length = city.length + 1;

        for (var i = 0; i < city.length; i++) {

            city.options[i + 1].value = i;

            city.options[i + 1].text = city[i];

        }

    }

}


<SELECT NAME="pref1" onChange="funcMain(true,this,document.formMain.city1)">

・・・

<SELECT NAME="pref2" onChange="funcMain(true,this,document.formMain.city2)">

・・・

<SELECT NAME="pref3" onChange="funcMain(true,this,document.formMain.city3)">

・・・

◎質問者からの返答

ご丁寧にありがとうございます

試してみます


2 ● Mook
●63ポイント

長いサンプルですが、下記のように変更でできないでしょうか。

<HTML>
<HEAD>
<TITLE>SELECT タグの連動 (最初にクライアントサイドに一括ダウンロード)</TITLE>
<SCRIPT LANGUAGE=JavaScript>
<!--
function funcSubmit() {
 var ePref;
 var eCity;
 var error = '';
 for( var i=1 ; i<=3 ; i++ ) {
 ePref = document.getElementsByName( "pref" + i )[0];
 eCity = document.getElementsByName( "city" + i )[0];

 if (ePref.selectedIndex == 0)
 error += '都道府県[' + i + "]を選択してください\n";
 if (eCity.selectedIndex == 0)
 error += '市町村[' + i + "]を選択してください\n";
 }
 if ( error == '' ) {
 return false;
 } else {
 alert( error );
 return true;
 }

}

function funcInit() {
 funcMain( "1",false );
 funcMain( "2",false );
 funcMain( "3",false );
}

function funcMain(num, b) {
 var ePref = document.getElementsByName( "pref" + num )[0];
 var eCity = document.getElementsByName( "city" + num )[0];
 if (ePref.selectedIndex == 0) {
 eCity.length = 1;
 eCity.selectedIndex = 0;
 } else {
 if (b) {
 eCity.length = 1;
 eCity.selectedIndex = 0;
 }
 var city = cities[ePref.selectedIndex - 1];
 eCity.length = city.length + 1;
 for (var i = 0; i < city.length; i++) {
 eCity.options[i + 1].value = i;
 eCity.options[i + 1].text = city[i];
 }
 }
}

var prefs = new Array("東京都", "大阪府", "愛知県", "千葉県");
var cities = new Array();
cities[0] = new Array("小平市", "町田市", "三鷹市");
cities[1] = new Array("大阪市", "豊中市");
cities[2] = new Array("名古屋市", "半田市", "瀬戸市");
cities[3] = new Array("千葉市", "市川市", "船橋市", "野田市", "柏市");
// -->
</SCRIPT>
</HEAD>
<BODY onLoad="funcInit()">
<FORM NAME="formMain" METHOD=POST ACTION=result.asp onSubmit="return funcSubmit()">
<SELECT NAME="pref1" onChange="funcMain('1', true)">
<OPTION VALUE="" SELECTED>(都道府県を選択してください)
<OPTION VALUE="0">東京都
<OPTION VALUE="1">大阪府
<OPTION VALUE="2">愛知県
<OPTION VALUE="3">千葉県
</SELECT>
<SELECT NAME="city1">
<OPTION VALUE="" SELECTED>(市町村を選択してください)
<OPTION VALUE="">
</SELECT>

<br><br>

<SELECT NAME="pref2" onChange="funcMain('2', true)">
<OPTION VALUE="" SELECTED>(都道府県を選択してください)
<OPTION VALUE="0">東京都
<OPTION VALUE="1">大阪府
<OPTION VALUE="2">愛知県
<OPTION VALUE="3">千葉県
</SELECT>
<SELECT NAME="city2">
<OPTION VALUE="" SELECTED>(市町村を選択してください)
<OPTION VALUE="">
</SELECT>

<br><br>

<SELECT NAME="pref3" onChange="funcMain('3', true)">
<OPTION VALUE="" SELECTED>(都道府県を選択してください)
<OPTION VALUE="0">東京都
<OPTION VALUE="1">大阪府
<OPTION VALUE="2">愛知県
<OPTION VALUE="3">千葉県
</SELECT>
<SELECT NAME="city3">
<OPTION VALUE="" SELECTED>(市町村を選択してください)
<OPTION VALUE="">
</SELECT>

<br><br>

<INPUT TYPE=submit VALUE="登録">
</FORM>
</BODY>
</HTML>

http://www.geocities.co.jp/SiliconValley/4334/unibon/asp/selecte...

◎質問者からの返答

ご丁寧にありがとうございます

これでできました

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ