2013-04-01 2 views
14

Я хочу сравнить две переменные, которые являются строками, но я получаю сообщение об ошибке.Как сравнить две переменные, содержащие строки в JavaScript?

<script> 
    var to_check=$(this).val(); 
    var cur_string=$("#0").text(); 
    var to_chk = "that"; 
    var cur_str= "that"; 

    if(to_chk==cur_str){ 
     alert("both are equal"); 
     $("#0").attr("class","correct");  
    } else { 
     alert("both are not equal"); 
     $("#0").attr("class","incorrect"); 
    } 
</script> 

Что-то не так с моим утверждением if?

+0

Это должно сделать трюк, а не там, где ваша проблема. Показать код. – Havenard

+0

, пожалуйста, напишите больше кода с тем, как вы получаете to_chk и cur_str ... не можете сказать из этого –

+3

Вы не указали, какую ошибку вы получаете. – techfoobar

ответ

14

=== не является необходимым. Вы знаете, что оба значения являются строками, поэтому вам не нужно сравнивать типы.

function do_check() 
 
{ 
 
    var str1 = $("#textbox1").val(); 
 
    var str2 = $("#textbox2").val(); 
 

 
    if (str1 == str2) 
 
    { 
 
    $(":text").removeClass("incorrect"); 
 
    alert("equal"); 
 
    } 
 
    else 
 
    { 
 
    $(":text").addClass("incorrect"); 
 
    alert("not equal"); 
 
    } 
 
}
.incorrect 
 
{ 
 
    background: #ff8888; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input id="textbox1" type="text"> 
 
<input id="textbox2" type="text"> 
 

 
<button onclick="do_check()">check</button>

+0

Я разобрал его. Но спасибо в любом случае – InvincibleWolf

+0

У меня была такая же проблема сегодня, и сравнение не получилось. Потратив пару часов на потянув мои волосы, я понял, что инициализирую свою переменную как var x; и сравнение не получилось. Когда я изменил var x = ""; это сработало. Поэтому я предполагаю, что сравнение объектов сравнивалось с сопоставлением строк. – Sannu

4

вместо того, чтобы использовать == знак, безопаснее Используйте === знак при сравнении код, который вы размещаете это работает хорошо

+0

Нет, оба значения в сравнении будут строками. –

+0

Как вы это достигаете? если (a b) a = 12345, b = 123 - true, потому что a имеет все элементы b? –

0

Я использовал ниже функции для сравнения двух строк и он работает хорошо.

function CompareUserId (first, second) 
{ 

    var regex = new RegExp('^' + first+ '$', 'i'); 
    if (regex.test(second)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
    return false; 
} 
Смежные вопросы