如何缩短我的嵌套if/else语句
How to shorten my nested if/else statement?
我有以下js代码:
var currentUrl = location
if(/s01/.test(currentUrl)||/s02/.test(currentUrl)){
$('#info,#name').removeClass('onselect').addClass('offselect');
if(/s01/.test(currentUrl)){
$('#AA').removeClass('offselect').addClass('onselect');
} else if(/s02/.test(currentUrl)){
$('#BB').removeClass('offselect').addClass('onselect');
}
} else {
.....
}
代码在嵌套的if/else语句中有相同的部分:
if(/s01/.test(currentUrl) {
} else if(/s02/.test(currentUrl) {
}
我可以把它缩短成:
if(a){
} else if(b){
}
还有其他建议吗?
一个可供选择的版本,它将为您提供将来展开的选项:
var offelements = "#info,#name,#AA,#BB";
var onelements = "";
if (/s01/.test(currentUrl)) onelements = "#AA";
else if (/s02/.test(currentUrl)) onelements = "#BB";
// etc: else if (/s03/.test(currentUrl)) onelements = "#CC";
if (onelements !== "")
{
$(offelements).removeClass('onselect').addClass('offselect');
$(onelements).removeClass('offselect').addClass('onselect');
}
另外,如果您为所有项目添加一个类而不是使用id,您可以使用:
var offelements = ".onoffelements";
给定
var a = /s01/.test(currentUrl)
var b = /s02/.test(currentUrl)
你可以这样做:
if (a||b) {
$('#info,#name').removeClass('onselect').addClass('offselect');
if (a) {
$('#AA').removeClass('offselect').addClass('onselect');
} else if (b) {
$('#BB').removeClass('offselect').addClass('onselect');
}
} else {
...
}
或
if (a) {
$('#info,#name').removeClass('onselect').addClass('offselect');
$('#AA').removeClass('offselect').addClass('onselect');
} else if (b) {
$('#info,#name').removeClass('onselect').addClass('offselect');
$('#BB').removeClass('offselect').addClass('onselect');
} else {
...
}
一个稍微不同的方法,更容易扩展:)
var mapUrlPartIds = { "s01": "AA", "s02": "BB" },
rxUrlParts = new RegExp(Object.keys(mapUrlPartIds).join("|")),
match = (currentUrl.match(rxUrlParts) || []);
if (match.length && mapUrlPartIds[match[0]]) {
$('#info,#name').removeClass('onselect').addClass('offselect');
$(mapUrlIds[match[0]]).removeClass('offselect').addClass('onselect');
}
小提琴
版本单变量
给定var a = /s01/.test(currentUrl) << 0
+ /s02/.test(currentUrl) << 1
;
你可以这样做:
if(a){
$('#info,#name').removeClass('onselect').addClass('offselect');
if(a & (1<<0)){
$('#AA').removeClass('offselect').addClass('onselect');
} else
if(a & (1<<1)){
$('#BB').removeClass('offselect').addClass('onselect');
}
} else {
…
}
相关文章:
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 如何检查if/else语句中的随机条件
- 在Javascript中为if/else语句添加OR
- geoTest函数-创建if/else语句
- Jquery/Javascript使用IF/ELSE语句更改img SRC
- 编写if-else语句的更好方法
- Javascript if和else语句不起作用
- 为什么它立即跳到我的else语句
- 空变量的 else 语句
- 在if/else语句中显示DIV
- 由 if / else 语句中的无效语法导致的语法错误
- jQuery 验证正在复制 else 语句 |验证完成后,不会打印值
- JavaScript if else 语句来显示 html 标签
- 如何做if/else语句并使用控制台.log打印出来
- 此 JavaScript 代码无法正常工作(if-else 语句)
- 不带花括号的If/else语句javascript
- 如何缩短if-else语句
- 用于筛选数据的函数--if.else语句
- 赢得't输入javascript if/else语句
- 打印出带有参数的if-else语句