2015-05-27 3 views
0

У меня есть некоторые вопросы кодирования/сравнения javascript. alert(myfn) дает мне 78>=99.35. Как я могу использовать это в функции сейчас?Функция сравнения Javascript с текстовыми значениями

if (document.getElementById('<%=g.ClientID%>').innerHTML != '') { 
    var myvar = ''; 
    var myfn = ''; 
    myvar = document.getElementById('<%=a.ClientID%>').value + document.getElementById('<%=g.ClientID%>').innerHTML; 
    //alert(myvar); 
    myfn = myvar.replace('&gt;', '>').replace('&lt;', '<'); 
    alert(myfn); 
    if (myfn) { 
     alert("t"); 
    } 
    if (78>=99.35) { 
     alert("m"); 
    } 
    //alert(Boolean(myfn)); 
} 
+0

Вы можете уточнить, пожалуйста, –

+0

'eval ('78> = 99.35 ')' дает вам 'false', однако это стоит. – Leo

+0

Возможный дубликат [Безопасная оценка арифметических выражений в Javascript] (http://stackoverflow.com/questions/5066824/safe-evaluation-of-arithmetic-expressions-in-javascript) –

ответ

-1

Вы можете использовать функцию eval.

http://www.w3schools.com/jsref/jsref_eval.asp

Eval() функция оценивает или выполняет аргумент.

Если аргумент является выражением, eval() оценивает выражение. Если аргумент - это один или несколько операторов JavaScript, eval() выполняет операторы .

alert(eval("78>=99.35"));

UPDATE:

Если вам нужно сделать только арифметические вычисления, то вы можете использовать следующий код, чтобы сделать eval безопаснее (как точки @JosephMalle его)

var exp = "78>=99.35"; 
 

 
exp = exp.replace(/[^0-9<>=\-()\.]/g, ""); 
 
// or 
 
exp = exp.replace(/[^0-9<>=\-()\.+*/|&\?%:]/g, ""); 
 
// which also includes bitwise, logical 
 
// and conditional (ternary) operators 
 
alert(eval(exp));

+0

Это было бы опасно, потому что будет запущен любой действительный JavaScript, который попадает в функцию 'eval'. –

+0

@JosephMalle Он также останавливает оптимизацию двигателей JS. – Leo

Смежные вопросы