很抱歉那个愚蠢的问题。如何在javascript切换大小写语言元素中为案件使用条件?像下面的示例一样,当变量liCount<= 5和> 0 时,大小写应该匹配;但是,我的代码不起作用:
liCount
switch (liCount) { case 0: setLayoutState('start'); var api = $('#UploadList').data('jsp'); api.reinitialise(); break; case (liCount<=5 && liCount>0): setLayoutState('upload1Row'); var api = $('#UploadList').data('jsp'); api.reinitialise(); break; case (liCount<=10 && liCount>5): setLayoutState('upload2Rows'); var api = $('#UploadList').data('jsp'); api.reinitialise(); break; case (liCount>10): var api = $('#UploadList').data('jsp'); api.reinitialise(); break; }
感谢您的任何建议!
这有效:
switch (true) { case liCount == 0: setLayoutState('start'); var api = $('#UploadList').data('jsp'); api.reinitialise(); break; case liCount<=5 && liCount>0: setLayoutState('upload1Row'); var api = $('#UploadList').data('jsp'); api.reinitialise(); break; case liCount<=10 && liCount>5: setLayoutState('upload2Rows'); var api = $('#UploadList').data('jsp'); api.reinitialise(); break; case liCount>10: var api = $('#UploadList').data('jsp'); api.reinitialise(); break; }
此答案的先前版本认为括号是罪魁祸首。实际上,括号在这里是无关紧要的-唯一必要的是switch(true){...}您的case表达式必须为布尔值。
switch(true){...}
之所以起作用,是因为我们将给开关的值用作比较的依据。因此,同样对布尔值求值的case表达式将确定运行哪个case。也可以解决这个问题,传递switch(false){..}所需的表达式并将其评估为false而不是true ..但个人更喜欢处理评估为真实的条件。但是,它也确实起作用,因此值得牢记以了解它在做什么。
switch(false){..}
例如:如果liCount为3,则第一个比较为true === (liCount == 0),表示第一种情况为假。然后,开关继续进行下一种情况true === (liCount<=5 && liCount>0)。该表达式的计算结果为true,表示此情况已运行,并在处终止break。我在此处添加了括号以使其更清楚,但它们是可选的,具体取决于表达式的复杂性。
true === (liCount == 0)
true === (liCount<=5 && liCount>0)
break
这很简单,并且以一种整洁的方式(如果它适合您要执行的操作)来处理一系列条件,其中一系列ìf() ... else if() ... else if () ...可能会引入大量视觉噪声或脆弱性。
ìf() ... else if() ... else if () ...
请谨慎使用,因为尽管它是有效的代码,但它是非标准模式。