2011-06-20 49 views
2

我有不同的XML(對於差異操作系統),我只發佈相關的SunOne xml的XML部分。我的javascript代碼中的字符串比較有什麼問題?

<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 -"); 
    } 

螢火蟲的屏幕截圖螢火蟲console.info

enter image description here

我的問題是,爲什麼不能把它檢查SunOs或任何其他?

注意:我認爲是OSNAME後一個額外的性格,我也做了一個xsl當我檢查我做類似下面,我怎麼能做到這一點的JS?

XSL代碼

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

我也曾嘗試if(osname=="SunOS&#xa;")

+0

謝謝大家對你的答案:) – abi1964

回答

3

這是因爲字符串實際上不是SunOS,而是SunOS\n(其中\n代表換行符)。使用jQuery.trim刪除周圍的空間。

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

非常感謝:) – abi1964

3

可能是你有多餘的空格字符,試試這個

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

,並使用該OSNAME比較。檢查$.trim瞭解更多詳情。

1

可能有很多白色空間添加到您的osname -variable - 我使用XML時遇到相當頻繁。嘗試檢查osname.trim()

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; 
}