2011-09-06 59 views
2

我试图以允许if语句条件被放置到一个文本字段,然后Javascript来采取文本字段并返回,如果这将是对或错。使用字符串/文本输入字段为JavaScript一个条件if语句

logicStr = document.getElementById('logicString').value; 

if(logicStr){ 
alert("true"); 
}else{ 
alert("false"); 
} 

以上例为例,如果输入为“1 == 0”,则警报应该为false。但JavaScript把它看作我问是字符串不是null,它不是那么它提醒真实的。我需要以某种方式转换为逻辑布尔声明。

回答

1

只要这个全部由用户输入驱动和地方留成,eval应该为你工作。

if(eval(logicStr)){ 
    alert("true"); 
}else{ 
    alert("false"); 
} 
0

查看JavaScript eval()函数。它需要一个字符串输入,并会评估它作为一个JavaScript表达式。

eval("1==0"); 
false 

eval("1==1"): 
true 
0

Demo

'false === false'.replace(/([a-zA-Z0-9]+) ?(==={0,1}) ?([a-zA-Z0-9]+)/, function (str,b,c,d) { 
    if (/false/.test(b)) b = false; 
    if (/false/.test(d)) d = false; 
    if (/true/.test(b)) b = true; 
    if (/true/.test(d)) d = true; 

    if (c == '===') return +b === +d; 
    else return d == b; 
}); // true 

'1 == 0'.replace(/([a-zA-Z0-9]+) ?(==={0,1}) ?([a-zA-Z0-9]+)/, function (str,b,c,d) { 
    if (/false/.test(b)) b = false; 
    if (/false/.test(d)) d = false; 
    if (/true/.test(b)) b = true; 
    if (/true/.test(d)) d = true; 

    if (c == '===') return +b === +d; 
    else return d == b; 
}); // false 

试图解析它。