比较javascript中的字符串

时间:2011-01-29 09:48:25

标签: javascript prototypejs

我正在比较两个应该相等的字符串。 由于某种原因,它认为它们不是。

这是代码:

   function(){
    prev = $('h').value;
    now = $('content').innerHTML;
    alert(prev);
    alert(now);
    if(prev == now)
    {
    $('content').fade({ duration: 3.0, from: 0, to: 1 });
    }
    else{alert('lol');}
    }

我添加了警报功能,以确保它们是平等的。

知道为什么它给了我“警告('lol)”?

3 个答案:

答案 0 :(得分:1)

您的代码不正确:

您需要使用val()代替value jQuery选择器,或使用get[0]简写将其转换为DOM元素,以使用value。< / p>

value为您提供value属性内的内容,而innerHTML为您提供元素的内部html。你应该对两个元素使用valueinnerHTML,具体取决于元素的类型:)

示例:

prev = $('h').val();
now = $('content').val();

if(prev == now)

或者:

prev = $('h')[0].innerHTML;
now = $('content')[0].innerHTML;

if(prev == now)

答案 1 :(得分:1)

您的字符串可能不同,但很难在alert()框中看到前导和尾随空格。您可以尝试trim()字符串:

if ($.trim(prev) == $.trim(now)) {
    $('content').fade({ duration: 3.0, from: 0, to: 1 });
}

答案 2 :(得分:1)

两个字符串在警告框中可能看起来相同但不相同。例如,在其中一个字符串的开头或结尾处的空格。

我发现如果我遇到这个问题,我可以通过在警报时向字符串添加标记来更轻松地发现它,如下所示:

alert('['+mystring+']');

此外,console.log()是比alert()调试此类事情更强大的方法。在使用内置开发人员工具时,大多数现代浏览器都可以使用console.log()(在Firefox中,您需要为此安装Firebug插件)。

如果您发现有前导/尾随空格可以摆脱,您可以使用快速正则表达式轻松完成:

mystring = mystring.replace(/((^\s)|(\s$))/,'');

这将删除字符串开头和结尾的所有空格。

希望有所帮助。