getElementById 成功一次然后返回 null

发布于 2025-01-08 01:43:16 字数 778 浏览 1 评论 0原文

我是 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>

I'm new to javascript and this is driving me nuts.
I'm attempting to set the text and color of a label ("lblerrmsg") depending upon the value of a flag ("IsValid"). I've written a function in a .js file and have attached it to web site that I built with VS.

The function - specifically getElementById('lblErrMsg') works correctly the first time it is called, but in subsquent calls it returns null. (Don't know if this is relevant - but there are no posts between calls to the function.)

Following is the relevant portion of the function:

// 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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

知你几分 2025-01-15 01:43:16
ErrMsg.outerHTML = 'valid';

如果你这样做,你就销毁了之前的 ErrMsg,新的内容将不再有 id(这样就无法通过 getElementById 找到它)。

您确定不需要 innerHTML 吗?

ErrMsg.outerHTML = 'valid';

If you do that, you have destroyed the previous ErrMsg and the new content will not have the id anymore (so that it cannot be found by getElementById).

Are you sure you don't want innerHTML?

傲鸠 2025-01-15 01:43:16

尝试更改 div 或元素的类名来更改 css 样式,如果您想要

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

这样,您可以根据您的标志控制 css。

try to change the class name of the div or element to change the css style if you want

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

this way you can control the css depending on the flag of yours.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文