2017-09-24 163 views
0
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不同的条件语句IF(JavaScript)的

+0

你可以在问题中包含HTML吗? – guest271314

+0

我对这个问题表示抱歉,我纠正了它 – Makhnov

+0

你是说在页面上有三个元素,ID为'three'?我想你已经陷入了询问你的解决方案而不是描述实际问题的陷阱。 – llama

回答

1

其实你可以简单地做

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

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

+0

我道歉这个问题是不正确的,我纠正它 – Makhnov

1

所得使用选择器"#one"应始终是无论01document元件的id应该是唯一的.length,而不是在另一元件复制。

如果存在具有在在HTML和使用选择器".one"元素id"one"替代classid多个元件。

+0

我很抱歉,这个问题是不正确的,我纠正它 – Makhnov

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是不好的。

+0

我道歉的问题是不正确的,我纠正它 – Makhnov