如果是,则切换具有不同输出的情况
If else to switch case with different output
我正试图将此if else更改为开关:
var check = $(".fav_c").children();
if ($(check).attr("data-user_id")){
console.log('users');
}
else if ($(check).attr("data-company_id")){
console.log('companies');
}
对此:
var check = $('.fav_c').children();
switch (check) {
case $(check).attr('data-user_id') :
console.log('users');
break;
case $(check).attr('data-company_id') :
console.log('companies');
break;
default:
console.log('default');
}
然而,这并不等同,因为我总是得到默认情况。
怎么了?
您可以添加设置为"company"或"user"的data-category
并打开它。
您的两个代码不做相同的事情。
您正在从以下位置更改:
if ($(check).attr("data-user_id") == true)
至
switch (check) {
case $(check).attr('data-user_id') :
这意味着:
if (check == $(check).attr("data-user_id"))
switch
用于比较两个值。在您的情况下,它不等同于if
。
实际上,你的switch
翻译成if
就是
var check = $('.fav_c').children();
if (check == $(check).attr('data-user_id') {
console.log('users');
} else if (check == $(check).attr('data-company_id')) {
console.log('companies');
} else {
console.log('default');
}
正如你所看到的,这没有任何意义。
解决方案
也许你可以试试这个破解:
var check = $('.fav_c').children();
switch (true) {
case !!$(check).attr('data-user_id') :
console.log('users');
break;
case !!$(check).attr('data-company_id') :
console.log('companies');
break;
default:
console.log('default');
}
请注意,在每种情况下都添加了!!
。它们在这里强制值为bool
。
这将转化为(对于第一种情况)
true == !!$(check).attr('data-user_id')
相关文章:
- 如何在未直接触发的情况下停止事件
- 在JavaScript中输出转义字符
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在jQuery中将函数的输出分配给变量
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- Array.length似乎不起作用;console.log则显示其他情况
- 如果是,则切换具有不同输出的情况
- 如何在不输出结束PHP标签“?>”的情况下将PHP MySQL查询回显到Javascript变量中
- 将regex输出返回到第一种情况
- 如何在不向输出数组获取空值的情况下拆分字符串
- 为什么out.println输出只有两种情况为空
- 如何在不刷新、显示输出、重新加载表单、冲洗和重复的情况下提交表单
- 为什么生成器在没有赋值给变量的情况下给出相同的输出
- 在没有json解析的情况下,在jade中输出服务器生成的json对象
- 在“没有结果”的情况下;在Express场景中,我如何将选择错误消息输出到浏览器而不显示空数组[]
- 如何在不刷新或刷新的情况下更改innerHTML,并使用javascript中的相同按钮进行输出
- 为什么在对数组进行操作之前和之后将其记录到控制台会在每种情况下显示相同的输出
- 为什么我的以下小提琴在没有任何打印调用的情况下给出输出