javascript - 需要摆脱许多如果

标签 javascript refactoring

我的java脚本中有全局变量。现在每次内部函数调用时我都会得到不同的值。我需要创建一个选项标签,其中包含属性中的选定值,以及一个没有基于变量的选定值的选项标签。我想这更令人困惑,让我举个例子。

var a1 = "a1c" // default value but may change

if(a1 == "all")
{
    var allstatusdefault = '<option value="all" selected="selected">All</option>';
}
else
{
    var allstatusdefault = '<option value="all" >All</option>';
}

if(a1 == "a1b")
{
    var allstatusdefault1 = '<option value="a1b" selected="selected">a1b</option>';
}
else
{
    var allstatusdefault1 = '<option value="a1b" >a1b</option>';
}

if(a1 == "a1bc")
{
    var allstatusdefault2 = '<option value="a1bc" selected="selected">a1bc</option>';
}
else
{
    var allstatusdefault2 = '<option value="a1bc" >a1bc</option>';
}

这只是示例,但我必须生成许多具有不同值的选项标记。我不想写信给很多人,如果......有人有任何其他想法吗?

最佳答案

提取通用代码,我发现这里有很多重复。

var a1 = "a1c";

function buildOption(id) {
    var selected = (a1 == id? ' selected="selected"' : '');
    return '<option value="' + id + '"' + selected + '>' + id + '</option>';
}

var allstatusdefault =  buildOption('all');
var allstatusdefault1 = buildOption('a1b');
var allstatusdefault2 = buildOption('a1bc');

关于javascript - 需要摆脱许多如果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12115366/

相关文章:

javascript - 我应该在 sinon.js 中模拟 cors OPTIONS 请求还是如何测试跨域 ajax 请求?

refactoring - 如何打破在内部发生巨大变化的用户故事,例如底层数据访问层

javascript - 如何在 Angular 表单上设置自定义验证?

javascript - 通过 Javascript 问题更改下拉菜单中的选项

python - 如何重构 API

无需重构的 Android Studio 重命名

c# - .NET 重构,DRY。双重继承、数据访问和关注点分离

haskell - 在 Haskell 标准库的帮助下重构这样的虚拟代码的最佳方法是什么?

C# Facebook SDK 将 accesstoken 延长至 60 天

javascript - 如何为 fancybox 图像 [ fancyBox 3 ] 插入 alt 标签?