【问题标题】:Correct code for multiple conditions for else ifelse if 的多个条件的正确代码
【发布时间】:2017-03-01 06:33:32
【问题描述】:

您好,我在这段代码中遇到了困难,我认为我的 if else 条件是错误的。

当你运行程序时,如果用户什么都不输入,它会发送'list-group-item-danger',这是第一个if语句,然后如果用户同时输入了NAME和PLACE,它会发送'list-group-项目成功”。两者都是正确的。

如果用户输入至少一个输入(名称或地点),它会发送 'list-group-item-success' 也是错误的,因为它没有 满足第二个 if 语句(PLACE and(&&) NAME)的条件,它 应该在它发送的最后一条语句上 '列表组项目警告'

var obj = {};
   db.all("SELECT * FROM f41 WHERE id = ?",[id], function(err,rows){	  
if((rows[0].NAME == null || rows[0].NAME == '') && (rows[0].PLACE == null || rows[0].PLACE == ''))
	{
    obj.f41='list-group-item-danger';
	}
else if((rows[0].NAME != null || rows[0].NAME != '') && (rows[0].PLACE != null || rows[0].PLACE != ''))
	{
	  obj.f41='list-group-item-success';
	}
	else
	{
	  obj.f41='list-group-item-warning';
	}
  res.send(obj);
   });

【问题讨论】:

  • 你的 sn-p 显示错误。你能添加一个工作的 sn-p
  • 已经编辑了代码,我认为它现在应该可以工作了

标签: javascript html node.js sqlite nested-loops


【解决方案1】:

据我了解,问题出在这里:

(rows[0].NAME != null || rows[0].NAME != '')

如果row[0].NAMEnull,则它不等于"",反之亦然。因此它将返回 true。

你可以试试

!(rows[0].NAME == null || rows[0].NAME === '')

你也可以尝试创建一个utils函数isEmpty

var obj = {};
db.all("SELECT * FROM f41 WHERE id = ?", [id], function(err, rows) {
  if (isEmpty(rows[0].NAME) && isEmpty(rows[0].PLACE)) {
    obj.f41 = 'list-group-item-danger';
  } 
  else if (!isEmpty(rows[0].NAME) && !isEmpty(rows[0].PLACE)) {
    obj.f41 = 'list-group-item-success';
  } else {
    obj.f41 = 'list-group-item-warning';
  }
  res.send(obj);
});

function isEmpty(v){
  return v === null || v.toString().trim().length === 0
}

【讨论】:

    【解决方案2】:

    你可以像这样改善你的条件

    if(rows[0].NAME && rows[0].PLACE) {
        obj.f41='list-group-item-success';
    } else if(!rows[0].NAME && !rows[0].PLACE) {
        obj.f41='list-group-item-danger';
    } else {
        obj.f41='list-group-item-warning';
    }
    

    【讨论】:

    • 注意,在JS中false0也是假的
    • @Rajesh 我知道,但是看问题,我认为这是一个字符串....所以这里不需要考虑 0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2022-10-16
    相关资源
    最近更新 更多