我正在使用Alert()來確保「登錄」和頁面上元素的innerHTML之間存在匹配。字符串比較在Javascript中失敗
var statusElement = document.getElementById('logged-in-status');
var currentLoggedInStatus = statusElement.innerHTML;
alert("innerHTML is: " + currentLoggedInStatus);
當警告框彈出,它說:innerHTML的是:登錄
var stringComp = (currentLoggedInStatus == "Login");
alert("stringComp is: " + stringComp);
當這第二個提示框彈出,它說:stringComp是:假
因此,'if'語句內的代碼ERRONEOUSLY執行。我沒有看到第一個alert()清楚地說明innerHTML是'Login',但if語句中的代碼正好在前面並執行。我試着圍繞'登錄' 單引號,並沒有幫助。
if(currentLoggedInStatus != "Login")
{
navBarLoginStatusTextElement.innerHTML = 'Login';
}
要重申的是,的innerHTML =登錄時,我比較innerHTML來登錄 它說,他們是不一樣的!
爲什麼我的javascript比較失敗了?
編輯:這裏是設置「登錄」的價值塊元素和PHP函數:
<a id="logged-in-status"
href="http://localhost/myProj/justAfile.php"><?php echo getLoginStatusStr();?> </a>
,並在一個PHP代碼塊的功能是:
function getLoginStatusStr()
{
return 'Login';
}
請JSF代碼或鏈接到它,如果可能的話。我可能會建議innerHTML實際上是「登錄」而不是「登錄」...因此,將您的調試警報更改爲警報(「stringComp is:'」+ currentLoggedInStatus +「'」);請驗證這一點。 – AlanFoster 2012-01-02 09:38:04
當你有這個時,你會得到什麼? 'var stringComp =(currentLoggedInStatus.indexOf(「Login」)> = 0);' – 2012-01-02 09:44:46
您的鏈接'#login-in-status'似乎以空白結尾,就像@AlanFoster懷疑的一樣。在比較之前修剪它。 – Stefan 2012-01-02 09:50:48