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毎に作っておく必要があるのでしょうか
説明がうまくなくて申し訳ありません。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/09/18 15:08:29
  • 終了:2007/09/18 20:58:26

回答(2件)

id:F-15X No.1

F-15X回答回数111ベストアンサー獲得回数132007/09/18 16:52:04

ポイント35pt

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)">

・・・

id:jcf01700

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

試してみます

2007/09/18 20:57:50
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/09/18 17:32:22

ポイント63pt

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

<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...

id:jcf01700

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

これでできました

2007/09/18 20:57:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません