我有不同的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
我的问题是为什么不能检查SunOs
或其他?
注意:我认为在osname之后还有一个额外的字符,我也做了一个xsl
当我检查我做下面的事情时,我怎么能在JS中做到这一点?
XSL代码
<xsl:if test="$sunos='SunOS
'">
我也试过if(osname=="SunOS
")
答案 0 :(得分:3)
答案 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;
}