2012-02-21 101 views
0

我是JavaScript新手,這讓我感到非常緊張。 我試圖根據標誌的值(「IsValid」)設置標籤的文本和顏色(「lblerrmsg」)。我在.js文件中編寫了一個函數,並將它附加到我用VS編譯的網站上。getElementById成功一次,然後返回null

函數 - 特別是getElementById('lblErrMsg')在第一次調用它時正常工作,但在後續調用中返回null。 (不知道這是否是相關的 - 但也有呼叫之間沒有職位的功能。)

以下是該函數的相關部分:

// If IsValid is false - make the text red 
var ErrMsg = document.getElementById('lblErrMsg'); 
if (IsValid) { 
    document.activeElement.style.color = 'navy'; 
    ErrMsg.outerHTML = 'valid'; 
} 
else { 
    document.activeElement.style.color = 'red'; 
    ErrMsg.outerHTML = "*** Invalid Entry ***"; 
    ErrMsg.style.color = 'red'; 
} 


<asp:TextBox ID="tbNumber" runat="server"></asp:TextBox> 
<asp:Label ID="lblErrMsg" runat="server" ForeColor="Red" 
    Text=" xxx" ></asp:Label> 
+2

如果要保留包含對象,請使用'innerHTML'而不是'outerHTML'。 – jfriend00 2012-02-21 03:30:30

回答

0

嘗試改變DIV或元素的類名稱更改CSS樣式,如果你想

document.getElementById("blah").className = "cssclass"; 

這種方式,您可以根據您的標誌控制的CSS。

3
ErrMsg.outerHTML = 'valid'; 

如果你這樣做,你已經銷燬了以前的ErrMsg,新的內容將不再有該id(所以它不能被getElementById找到)。

你確定你不想要innerHTML嗎?

+0

將outer更改爲innerHTML沒有任何影響。我選擇爲錯誤消息設置一些靜態文本,並使用css類來隱藏或顯示它。 (根據伯特的建議)。感謝您的快速回復。這個css解決方法現在可以完成......但是我會一直使用原來的方法,直到我開始工作。 – dan9359 2012-02-21 04:08:22

+0

並非所有的瀏覽器都支持outerHTML,因此它不會做任何有用的操作。 – RobG 2012-02-21 04:37:38