Javascript切换语句,如果字符串包含子字符串

javascript switch statement, if string contains substring

本文关键字:字符串 包含 如果 语句 Javascript      更新时间:2023-09-26

我想弄清楚如何做一个开关语句,我需要找到对象的类名,然后根据类名做一些事情(在开关语句)。

在这个例子中,当类包含一个特定的单词时,我需要switch语句做任何我需要做的事情,比如"person"。

html

<div class="person temp something"></div>
javascript

$(document).on('mousedown', function(e) {
    var clicked = $(e.target).attr('class');
    console.log(clicked);
    switch (clicked) {
        case "person":
            //do something
            break;
        default:    
            //do something  
    }
});

不能保证switch语句的名称,比如"person"会出现在第一个位置。

我知道我可以在数组中搜索特定的单词,但我不知道如何将它添加到这种东西中

正如我在评论中所说,在这种情况下,switch语句似乎不是合适的方法。

既然你正在使用jQuery,只需使用 .hasClass :

if ($(e.target).hasClass('person')) {
  // do something
}

如果你想为多个类做一些更复杂的事情,你可以创建一个class -> function映射并简单地遍历类列表:

var classActions = {
    person: function(element) { /* do something */ },
    temp: function(element) { /* do something */},
    // ...
};
var classes = e.target.className.split(/'s+/);
$.each(classes, function(index, cls) {
    classActions[cls](e.target);
});

您需要使用.split(). indexof ()的组合。你的代码应该是这样的:

var clicked = $(e.target).attr('class');
var classes = clicked.split(' ');
    if(classess.indexOf('person') > 0) {
      //do work
    } else if (classes.indexOf('foo') > 0) {
      //do work
    } else if (classes.indexOf('bar') > 0) {
      //do work
    }

.split()的MDN文档

.indexOf()的MDN文档

请注意,有很多方法允许您这样做。例如,您可以使用string.search(substring)来检查字符串是否包含您的子字符串。如果存在子字符串,则返回找到的索引(从0到n的某个数字),否则,如果没有找到,则返回-1。因此,如果search大于或等于0,则子字符串存在。

if(clicked.search("person") >= 0)
    // "person" is in clicked