正如标题所示,我正在使用脚本生成if验证。所以if语句将根据给定的数组进行调整(应该作为配置文件)。
让我举个例子:
if(sTime == "12:00:00")
{
//code to happen when it's 12 o'clock
}
配置输入应为“12:00:00”。没关系。但是如果配置文件中有更多次?
if语句应该是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,你可能没有注意到
答案 0 :(得分:3)
如果预期的验证字面意思是“sTime
的值与此数组中的某个元素匹配”,那么您可以这样做:
if(tijd.indexOf(sTime) > -1) {
// code here
}
或者,如果由于某种原因你的浏览器不支持,那就有一个jQuery函数:
if($.inArray(sTime, tijd)) {
// code here
}
不应该需要将if
语句条件生成为字符串,然后尝试将其作为代码的一部分执行。
如果你绝对必须(我强烈建议不这样做),你可以使用eval
:
if(eval(validatie)) {
// code here
}