繁体   English   中英

如果不同的条件语句IF合并为一个条件语句(javaScript)

[英]Unite in one conditional statements IF different conditional statements IF (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使用运算符(||或另一个)中,并根据条件显示不同的消息? 我尝试过这样做,但是很不幸。 谢谢你的进步。

其实你可以做

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

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

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

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

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

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

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

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

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

同样,这并不假定实际情况像仅将长度附加到字符串那样简单。


原始答案

我不会假设.length和消息之间总是存在如此巧妙的.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";

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM