JavaScriptについての質問です

あるページで、GETで渡されたパラメーターによって、プルダウンメニューの初期選択を変えたいと考えていますが、それは可能でしょうか。
可能であれば、サンプル等ありましたらお教えください。よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:2006/09/04 23:01:47
  • 終了:2006/09/06 23:44:51

ベストアンサー

id:llusall No.1

llusall回答回数505ベストアンサー獲得回数612006/09/04 23:53:13

ポイント70pt

JavaScriptで実装したサンプルです。

参考になりますでしょうか?


※GETでもらった引数は、「location.search」から取得できます。


1.html

<html>

<body>

<a href="2.html?myList=2">次ページ</a>

</body>

</html>

2.html

<html>

<body onload="setDropDownList();">

    <form>

        <select id="myList" >

        <option value="1">hoge1

        <option value="2">hoge2

        <option value="3">hoge3

        </select>

    </form>

</body>

</html>

<script type="text/JavaScript">

<!--

function setDropDownList(){

    // ドロップダウンリストの要素を取得

    var element = document.getElementById("myList");

    // GET引数から、myList=n の「n」の部分を取得

    var oSearch = new CLocationSearch(location.search);

    var lstVal = oSearch.item("myList");

    // ドロップダウンリストの初期選択

    element.value = lstVal;

}

// 参考 Javascript版 location.search汎用クラス

//       http://frog.raindrop.jp/knowledge/archives/000070.html

function CLocationSearch(sSource) {

    

    /* 初期化処理 */

    var sAry = new Array(); /* アイテム配列を追加 */

    {

        var nCur = 0, nRet = 0;

        var sSearch = sSource.substr(1);

        var sName, sValue;

                

        nRet = sSearch.indexOf('=', nCur)       // 最初の'='を検索

        while(nRet >= 0) {

            // '='以前が変数名

            sName = sSearch.substring(nCur, nRet);

            nCur = nRet + 1;

            

            // 値を取り出す

            nRet = sSearch.indexOf('&', nCur);  // 変数の区切りを検索

            if (nRet == -1) nRet = sSearch.length + 1;      // なければ最後まで

            sValue = sSearch.substring(nCur, nRet);

            

            // 配列に格納

            sAry[sName] = sValue;

            

            // 次を検索

            nCur = nRet + 1;

            nRet = sSearch.indexOf('=', nCur);

        }

    }

    

    /* 値 */

    this.valueOf = function () {

        return sSource;

    }

    

    /* 値を取り出すメソッド */

    this.item = function (sVarname) {

        try {

            return sAry[sVarname];  //あれば返す

        } catch(e) {

            return '';              //なければ空文字を返す

        }

    }

    

    /* 要素数 */

    this.length   = function () {

        return sAry.length;

    }

    

    /* toString */

    this.toString = function () {

        return this.length + '';

    }

    

}

//-->

</script>

id:n_maco2

ご回答ありがとうございました

助かりました!

2006/09/06 23:43:37

その他の回答(1件)

id:llusall No.1

llusall回答回数505ベストアンサー獲得回数612006/09/04 23:53:13ここでベストアンサー

ポイント70pt

JavaScriptで実装したサンプルです。

参考になりますでしょうか?


※GETでもらった引数は、「location.search」から取得できます。


1.html

<html>

<body>

<a href="2.html?myList=2">次ページ</a>

</body>

</html>

2.html

<html>

<body onload="setDropDownList();">

    <form>

        <select id="myList" >

        <option value="1">hoge1

        <option value="2">hoge2

        <option value="3">hoge3

        </select>

    </form>

</body>

</html>

<script type="text/JavaScript">

<!--

function setDropDownList(){

    // ドロップダウンリストの要素を取得

    var element = document.getElementById("myList");

    // GET引数から、myList=n の「n」の部分を取得

    var oSearch = new CLocationSearch(location.search);

    var lstVal = oSearch.item("myList");

    // ドロップダウンリストの初期選択

    element.value = lstVal;

}

// 参考 Javascript版 location.search汎用クラス

//       http://frog.raindrop.jp/knowledge/archives/000070.html

function CLocationSearch(sSource) {

    

    /* 初期化処理 */

    var sAry = new Array(); /* アイテム配列を追加 */

    {

        var nCur = 0, nRet = 0;

        var sSearch = sSource.substr(1);

        var sName, sValue;

                

        nRet = sSearch.indexOf('=', nCur)       // 最初の'='を検索

        while(nRet >= 0) {

            // '='以前が変数名

            sName = sSearch.substring(nCur, nRet);

            nCur = nRet + 1;

            

            // 値を取り出す

            nRet = sSearch.indexOf('&', nCur);  // 変数の区切りを検索

            if (nRet == -1) nRet = sSearch.length + 1;      // なければ最後まで

            sValue = sSearch.substring(nCur, nRet);

            

            // 配列に格納

            sAry[sName] = sValue;

            

            // 次を検索

            nCur = nRet + 1;

            nRet = sSearch.indexOf('=', nCur);

        }

    }

    

    /* 値 */

    this.valueOf = function () {

        return sSource;

    }

    

    /* 値を取り出すメソッド */

    this.item = function (sVarname) {

        try {

            return sAry[sVarname];  //あれば返す

        } catch(e) {

            return '';              //なければ空文字を返す

        }

    }

    

    /* 要素数 */

    this.length   = function () {

        return sAry.length;

    }

    

    /* toString */

    this.toString = function () {

        return this.length + '';

    }

    

}

//-->

</script>

id:n_maco2

ご回答ありがとうございました

助かりました!

2006/09/06 23:43:37
id:ninja56 No.2

ninja56回答回数32ベストアンサー獲得回数02006/09/05 16:10:28

id:n_maco2

すみません、なにを見せたいのかよくわかりませんでした・・・

2006/09/06 23:44:24

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

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

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

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

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