我编写了一个函数,将“,”和“and”放在三个链接之间
我怎样才能减少 if else 语句。
在javascript中,如果计数不为零,则我得到计数,这意味着链接必须显示,否则应该隐藏
在以下场景中
function inst_grammer()
{
var otherCount = parseInt($('.global_other_count').html());
var initCount = parseInt($('.global_init_count').html());
var signCount = parseInt($('.global_sign_count').html());
var init_class = $('.inst_init');
var sign_class = $('.inst_sign');
if (signCount != 0 && initCount != 0 && otherCount == 0)
{
init_class.html('').fadeOut();
sign_class.html(' and ').fadeIn();
} else if (signCount == 0 && initCount != 0 && otherCount != 0)
{
init_class.html(' and ').fadeIn();
sign_class.html('');
} else if (signCount != 0 && initCount != 0 && otherCount != 0)
{
init_class.html(' and ').fadeIn();
sign_class.html(' , ').fadeIn();
}
else if (signCount != 0 && initCount == 0 && otherCount == 0)
{
init_class.html('').fadeOut();
sign_class.html('').fadeOut();
}
else if (signCount == 0 && initCount != 0 && otherCount == 0)
{
init_class.html('').fadeOut();
sign_class.html('').fadeOut();
}
else if (signCount == 0 && initCount == 0 && otherCount != 0)
{
init_class.html('').fadeOut();
sign_class.html('').fadeOut();
}
else if (signCount != 0 && initCount == 0 && otherCount != 0)
{
init_class.html('').fadeOut();
sign_class.html(' and ').fadeIn();
}
}
我认为大家看待这个问题的方式都是错误的。这不是为了简化if
的,而是关于按语法顺序插入“,”和“and”分隔符的算法。
此问题的任何解决方案都应允许任意数量的项目(而不仅仅是指定的 3 个)。否则你可能会得到越来越多的if
测试规格是否发生变化。当然更可重用(即如果业务需求发生变化)。
我认为在这个例子中,目的是提供一个显示这些选项的显示:
- “a、b 和 c”
- “a和b”
- “a和c”
- “b 和 c”
- "a"
- "b"
- "c"
所以规则是:
- 如果显示项数为1,则不显示分隔符
- 如果显示项数为2,则项之间显示“and”
- 如果项目数为 3,则除最后一项外,使用“,”代替“and”。
所以基本上对于 n > 1,最后一个分隔符是“and”,所有其他分隔符都是“,”。这个简单的规则可以应用于任意数量的项目。
您只需计算非零项的数量即可获得此效果。正如我在评论中提到的,将数据放入数组中,以便您可以简单地迭代它。这意味着您的输出字段也应该位于数组中,以便您只按顺序显示您想要的字段。
如果您愿意提供 HTML 示例,我们很乐意提供代码,但您应该能够从这些简化的规则中自己找出答案。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)