【Javascript】도도부현에서 노선명과 역명을 취득하는 방법

아티팩트




이러한 느낌으로 도도부현을 선택하면, 노선명을 취득해,
노선명을 선택하면 역명을 취득합니다.

촬영 철의 매칭 사이트라든지 지도 사이트라든지에 사용할 수 있다고 생각했습니다.

환경



・Windows10
· Google 크롬
· VScode
· HeartRails Express

코드



index.html
<body>
        <table>
            <tr>
                <th>都道府県</th>
                <td>
                    <select id="pref">
                        <option value="">都道府県を選択してください</option>
                    </select>
                </td>
            </tr>
            <tr>
                <th>路線名</th>
                <td>
                    <select id="line">
                        <option value="">路線を選択してください</option>
                    </select>
                </td>
            </tr>
            <tr>
                <th>駅名</th>
                <td>
                    <select id="station">
                        <option value="">駅を選択してください</option>
                    </select>
                </td>
            </tr>
        </table>
    </body>
    <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script>
        $(function () {
            //初期設定
            var pref = $('#pref'); //都道府県のIDタグを取得
            var line = $('#line'); //路線のIDタグを取得
            var station = $('#station'); //駅名のIDタグを取得

            //最初に都道府県を読み込む
            $.getJSON('http://express.heartrails.com/api/json?method=getPrefectures&callback=?',function (json) {
                $.each(json.response.prefecture,function (key,value) {
                    var text = String(this); //都道府県が配列で返ってきたので文字列に変換
                    pref.append('<option value="'+text+'">'+text+"</option>");
                });
            });

            //都道府県から路線を検索
            pref.on('change',function () {
                $.getJSON('http://express.heartrails.com/api/json?method=getLines&callback=?',
                {prefecture:pref.val()},
                function (json) {
                    line.children().not(':first').remove();//「選択してください」のみ残して削除
                    station.children().not(':first').remove();
                    $.each(json.response.line,function (key,value) {
                        var text = String(this);
                        line.append('<option value="'+text+'">'+text+"</option>");
                    });
                });
            });

            //路線から駅名を検索
            line.on('change',function () {
                $.getJSON('http://express.heartrails.com/api/json?method=getStations&callback=?',
                {line:line.val()},
                function (json) {
                    station.children().not(':first').remove();//「選択してください」のみ残して削除
                    $.each(json.response.station,function (key,value) {
                        if (this.prefecture == pref.val()) {
                            var text = String(this.name);
                            station.append('<option value="'+text+'駅">'+text+"駅</option>")
                        }
                    })
                })
            })
        });
    </script>

기본은 친숙한 getJSON 메소드로 WebAPI를 취득!

도도부현을 선택하지 않으면 노선명을 취득할 수 없는,
노선명을 선택하지 않으면 역명을 선택할 수 없게 하는 것을 실현하기 위해
getJSON 메소드의 제 2 인수에 노선에는 도도부현을, 역명에는 노선의 JSON 데이터를 지정하고 있습니다.

선택한 것은 append 메소드에 의해 option 태그에 표시되어 이용되고 있습니다.

좋은 웹페이지 즐겨찾기