getElementById成功一次然后返回null

时间:2012-02-21 03:16:05

标签: javascript getelementbyid

我是javascript的新手,这让我疯狂。 我正在尝试根据标志的值(“IsValid”)设置标签的文本和颜色(“lblerrmsg”)。我在.js文件中编写了一个函数,并将其附加到我用VS构建的网站上。

函数 - 特别是 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 个答案:

答案 0 :(得分:3)

ErrMsg.outerHTML = 'valid';

如果你这样做,你已经破坏了之前的ErrMsg,新内容将不再具有id(因此getElementById无法找到它)。

你确定你不想要innerHTML吗?

答案 1 :(得分:0)

尝试更改div或元素的类名,以便在需要时更改css样式

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

这样你可以根据你的旗帜控制css。