我的javascript代码中的字符串比较有什么问题?

时间:2011-06-20 07:58:48

标签: javascript jquery xml xslt

我有不同的xml(对于diff os),我只发布了SunOs xml的相关xml部分。

  <osname>SunOS
</osname>

这是由jQuery提取的

var osname = $(this).find('osname').text();

稍后在我进行比较的代码中,它总是进入else部分,我使用console.info作为萤火虫并附上我输出的屏幕截图

console.info("Before checking:"+osname);
if(osname=="HP-UX")
    console.info("HP-UX");
else if(osname=="AIX")
    console.info("AIX");
else if(osname=="SunOS")
    console.info("SunOS");
else
{
    console.info("Linux -");
    }

Firebug console.info

的屏幕截图

enter image description here

我的问题是为什么不能检查SunOs或其他?

注意:我认为在osname之后还有一个额外的字符,我也做了一个xsl当我检查我做下面的事情时,我怎么能在JS中做到这一点?

XSL代码

<xsl:if test="$sunos='SunOS&#xa;'">

我也试过if(osname=="SunOS&#xa;")

4 个答案:

答案 0 :(得分:3)

可能你有无关的空格字符,试试这个

var osname = $.trim($(this).find('osname').text());

并使用此osname进行比较。查看$.trim了解详情。

答案 1 :(得分:3)

那是因为字符串实际上不是SunOS,而是SunOS\n(其中\n代表换行符)。使用jQuery.trim删除周围的空格。

var osname = $.trim($(this).find('osname').text());

答案 2 :(得分:1)

您的osname变量可能会附加很多空格 - 我在使用XML时经常会遇到这种情况。尝试查看osname.trim()

答案 3 :(得分:1)

这可能是因为你在字符串的末尾有一个换行符,因为结束标记位于下一行。

您可以使用trim方法删除字符串周围的空白字符:

var osname = $.trim($(this).find('osname').text());

console.info("Before checking:"+osname);

switch (osname) {
case "HP-UX":
  console.info("HP-UX");
  break;
case "AIX":
  console.info("AIX");
  break;
case "SunOS":
  console.info("SunOS");
  break;
default:
  console.info("Linux -");
  break;
}