0

タイトルが示すように、スクリプトを使用して if 検証を生成しています。したがって、if ステートメントは、指定された配列に基づいて調整されます (構成ファイルとして機能する必要があります)。
例を挙げましょう:

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

構成入力は「12:00:00」である必要があります。それはいいです。しかし、構成ファイルにさらに回数がある場合はどうなるでしょうか?
2 回の場合、if ステートメントは次のようになります。

 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この配列内の要素の1つと一致する」である場合、次のことができます。

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 に答える