javascript – 在jQuery中管理大量的IF语句

我有一个if语句,有超过100个不同的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');
    }
});

我想在英国为县建立一个,所以如果用户在下拉列表中选择“london”,则下一个字段将填充伦敦的邮政编码.

然而,我的问题是,我可以像上面的例子一样构建它,只是它会很大.

是否可以使用某种xml文件来执行此操作?或者是否可以将每个县及其值放入数组中的对象并以此方式定位?

非常感谢任何帮助,谢谢

http://jsfiddle.net/4xQeX/

解决方法

通常的解决方案是将您的运动/对象存储为数据,因为它是数据.
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文件中)以便于管理.

假设您要使用名为things.json的单独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();

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...