0

正如标题所示,我正在使用脚本生成 if 验证。因此 if 语句将根据给定的数组进行调整(应该作为配置文件起作用)。
让我给你举个例子:

 if(sTime == "12:00:00")
 {
   //code to happen when it's 12 o'clock
 }

配置输入应为“12:00:00”。没关系。但是如果配置文件中有更多次呢?
如果语句应该是 2 倍:

 if(sTime == "12:00:00" || sTime == "12:30:00")
 {
   //code to happen when it's 12 o'clock
 }



为了让这种情况自动发生,我根据配置输入自己生成验证。
这是我的生成代码:

var tijd = ["12:00:00", "12:30:00"];
var validatie = '';

var length = tijd.length;
$.each(tijd, function(key, value)
{
    if(length != key+1)
    {
        if(length > 1)
        {
            validatie += 'sTime =="' + value + '" || ';
        }
        else
        {
            validatie += 'sTime =="' + value + '"';
        }
    }
    else
    {
        validatie += 'sTime =="' + value + '"';
    }
})

在这种情况下,我的验证值将是:sTime == "12:00:00" || sTime == "12:30:00"
看起来和它应该的完全一样!但是我如何将其用作代码?它现在存储为字符串。

if(validatie)
{
  //will only check if the array exists
}

我怎样才能执行这个变量?
任何帮助表示赞赏!

jsFiddle

这都是在 jquery 中的,你可能没有注意到

4

1 回答 1

3

如果预期的验证字面上是“sTime匹配此数组中的元素之一的值”,那么您可以这样做:

if(tijd.indexOf(sTime) > -1) {
    // code here
}

或者,如果由于某种原因您的浏览器不支持该功能,则可以使用 jQuery 函数:

if($.inArray(sTime, tijd)) {
    // code here
}

不需要将if语句条件生成为字符串,然后尝试将其作为代码的一部分执行。

如果您确实必须这样做(我强烈建议您要这样做),您可以使用eval

if(eval(validatie)) {
    // code here
}
于 2013-10-04T10:40:39.533 回答