2013-04-01 168 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为真,因为a具有所有b元素? –

0

我用下面的函数来比较两个字符串,这是工作好。

function CompareUserId (first, second) 
{ 

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