联合一个条件语句IF不同的条件语句IF(javaScript)

时间:2017-09-24 17:08:59

标签: javascript

  var message;    
        if ( $('#one').length == 1 ){
           message = "101";
        }
        if ( $('#two').length == 2 ){ 
           message = "102";
        }
        if ( $('#third').length == 3 ){
           message = "103";
        }
    console.log(message);

如何在一个IF使用运算符(||或其他)中统一所有IF并根据条件显示不同的消息?     我试过这样做但很不幸。     谢谢你的进步。

3 个答案:

答案 0 :(得分:1)

其实你可以简单地做

var message = "10"+$('#one').length;
console.log(message);

请注意,0长度的条件。但是为什么你有多个具有相同id的元素?你的意思是上课?

答案 1 :(得分:1)

使用选择器.length的结果"#one"应始终为01,因为id中元素的document应该是唯一的,不与其他元素重复。

如果有多个元素id "one"替换class替换id的HTML元素并使用选择器".one"

答案 2 :(得分:0)

这个问题已经改变了,说实话,这个问题比以前更有意义。

我要做的是假设您要选择所有三个元素,并根据找到的实际元素数量来配置消息。我将使用下面的第二个示例来说明如何使用ID,尽管类更好。

var msgs = {
  1: "101",
  2: "102",
  3: "103",
}

var message = msgs[$("#one,#two,#three").length] || "Unknown";

所以现在它将尝试选择所有三个,并根据实际找到的数量给出一条消息。

这再次假设实际情况并不像仅仅将长度附加到字符串一样简单。

原始回答

我不会假设在.length和消息之间总是会有一个如此简洁的配对。

因此,更通用的解决方案是使用switch语句。

var message;    
switch ( $('#one').length ) {
  case 1: message = "101"; break;
  case 2: message = "102"; break;
  case 3: message = "103"; break;
  default: message = "Unknown";
}
console.log(message);

switch不是唯一的方法。您还可以创建一个将数字与消息相关联的对象。

var msgs = {
  1: "101",
  2: "102",
  3: "103",
}

var message = msgs[$("#one").length] || "Unknown";

请注意,jQuery只会为ID选择器返回一个元素,尽管querySelectorAll可能会返回多个,但重复ID并不好。