6

100 を超える異なる if ステートメントがある if ステートメントがあります。

現時点では、これに似たものを使用しています...

$('select').on("change",function(){
    if(  $(this).val() === 'tennis' )  {
        $('.sport').val('raquet');
    }
    else if(  $(this).val() === 'soccer' )  {
        $('.sport').val('goal');
    }
    if(  $(this).val() === 'snooker' )  {
        $('.sport').val('cue');
    }
});

英国の郡用に作成したいので、ユーザーがドロップダウンで「ロンドン」を選択すると、次のフィールドにロンドンの郵便番号が入力されます。

ただし、私の問題は、上記の例のように構築できますが、それが巨大になるだけです。

これを行うためにある種のxmlファイルを持つことは可能ですか? または、各郡とその値を配列内のオブジェクトに入れて、このようにターゲットにすることは可能でしょうか?

どんな助けでも大歓迎です、ありがとう

http://jsfiddle.net/4xQeX/

4

1 に答える 1

24

通常の解決策は、スポーツ/オブジェクトのペアをデータとして保存することです。これデータであるためです。

var tbl = {
    tennis: 'raquet',
    snooker: 'cue',
    ...
};

次に、この簡単なコードを使用します。

$('select').on("change", function(){
    var t = tbl[$(this).val()];
    if (typeof t === "string") $('.sport').val(t);
});

管理を容易にするために、別の JSON ファイルからフェッチtblする (または単に別の JS ファイルに保存する) こともできます。

という名前の別の JSON ファイルを使用する場合things.json、ファイルは次のようになります。

{
    "tennis": "raquet",
    "snooker":"cue",
    ...
}

コードは次のようになります。

var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
    if (httpRequest.readyState === 4) {
        if (httpRequest.status === 200) {
            var tbl = JSON.parse(httpRequest.responseText);
            $('select').on("change", function(){
                var t = tbl[$(this).val()];
                if (typeof t === "string") $('.sport').val(t);
            });
        }
    }
};
httpRequest.open('GET', 'things.json?time='+Date.now());
httpRequest.send(); 
于 2013-08-14T12:19:34.023 に答える