我正在比较两个应该相等的字符串。 由于某种原因,它认为它们不是。
这是代码:
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)”?
答案 0 :(得分:1)
您的代码不正确:
您需要使用val()
代替value
jQuery选择器,或使用get
或[0]
简写将其转换为DOM元素,以使用value
。< / p>
value
为您提供value
属性内的内容,而innerHTML
为您提供元素的内部html。你应该对两个元素使用value
或innerHTML
,具体取决于元素的类型:)
示例:强>
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$))/,'');
这将删除字符串开头和结尾的所有空格。
希望有所帮助。