2013-04-01 17 views
14

Chcę porównać dwie zmienne, które są ciągi, ale dostaję błąd.Jak porównać dwie zmienne zawierające ciągi w 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> 

Czy coś jest nie tak z moim instrukcją?

+0

To powinno załatwić sprawę, a nie tam, gdzie jest twój problem. Pokaż kod. – Havenard

+0

proszę napisać więcej kodu z tym, jak dostać się do to_chk i cur_str ... nie mogę powiedzieć od tego –

+3

Nie wspominałeś o tym, jaki błąd otrzymujesz .. – techfoobar

Odpowiedz

14

=== nie jest konieczne. Wiesz, że obie wartości są ciągami, więc nie musisz porównywać typów.

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

posortowałem to. Ale dzięki w każdym razie – InvincibleWolf

+0

Miałem ten sam problem dzisiaj i porównanie nie działa. Po spędzeniu kilku godzin ciągnąc moje włosy, pomyślałem, że inicjalizowałem moją zmienną jako var x; i porównanie nie działało. Kiedy zmieniłem var x = ""; zadziałało. Zgaduję więc, że używa porównania obiektów jako przeciwstawienia porównywaniu ciągów. – Sannu

4

zamiast używania oznaczenia ==, bardziej bezpieczniejsze korzystanie znak === gdy porównać kod, że post jest dobrze

+0

Nie, obie wartości w porównaniu będą ciągami. –

+0

jak to osiągnąć? jeśli (a b) a = 12345, b = 123 jest prawdziwe, ponieważ a ma wszystkie b elementy? –

0

Użyłem poniżej funkcji do porównywania dwóch ciągów i jest on działa dobrze.

function CompareUserId (first, second) 
{ 

    var regex = new RegExp('^' + first+ '$', 'i'); 
    if (regex.test(second)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
    return false; 
}