如果,为其他条件的正确代码

时间:2017-03-01 06:33:32

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

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

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

  

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

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);
   });

2 个答案:

答案 0 :(得分:2)

据我了解,问题在于:

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

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

你可以尝试

!(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
}

答案 1 :(得分:1)

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

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';
}