0

我試圖比較兩個字符串,出於某種原因,我得到了「錯誤」的結果。IE8中的JavaScript字符串比較

我已經打破代碼是最簡單的功能:

<script type="text/javascript"> 
function selectCat(cat) { 
    var catName = cat.firstChild.nodeValue; 
    alert(catName); 
    if(catName.toString() == "Acronyms") { 
     alert("True"); 
    } else { 
     alert("False"); 
    } 
} 
</script> 
</head> 

<body> 
<ul> 
<li onclick="selectCat(this)">Acronyms</li> 
</ul> 
</body> 

這個作品在Dreamweaver的實時視圖就好了,以及在IE8(當我按F12預覽)。但是,當我將此頁面上載到我公司的Web內容管理器(IBM WebSphere Portal)時,它不再有效。

我不知道環境之間有什麼不同,但是很令人沮喪。任何人有任何想法,爲什麼它可能不會將類別名稱視爲字符串?

+0

'==='是否更好? – asawyer

回答

2

由於某些原因,IE在nodeValue的末尾包含一個額外的空間,即您實際得到的是「Acronymms」。

編輯: 刪除尾隨的空間就可以。如果IE被包括的nodeValue結束的額外空間添加

if(catName.charAt(catName.length-1) == " "){ 
    catName = catName.substr(0,catName.length-1); 
} 
+0

這工作完美,謝謝sooo多瑞安!我不知道IE可以做到這一點/做到了這一點。 – Gdubz

1

嘗試 -

var catName; 
catName = (catName.toString()).trim(); 

然後將其與比較「縮略語」。

+0

我不知道它可能會這樣做,我會試試看! – Gdubz

+0

試了一下,出於某種原因,我得到了IE8下面的消息... '消息:對象不支持此屬性或method' – Gdubz

+1

檢查了這一點 - http://stackoverflow.com/questions/2308134/修剪,在JavaScript的 - 不工作,在-IE – imhere