15

我只是想将标签存储在 javascript 中的变量中,但由于某种原因,这不适用于document.getElementById('control');. 我知道我的 javascript 可以正常链接到我的 html 文件,因为其他一切正常。

这是我的javascript代码:

function performEvapCooledCircuit(txt)
{
    var error = document.getElementById('lblError');


    if (txt.value == null || isNaN(txt.value))
    {
       error.style.visibility = "visible";
    }
}

这是我的标签的 html 代码:

<asp:Label ID="lblError" class="NormLabel" runat="server" 
   style="color:red; visibility:hidden;" Text="Invalid Input."></asp:Label>

我收到一个错误,说是预期的对象??

4

5 回答 5

22

ASP.NET 将生成的 ID 不会是“lblError”,因此您需要通过其引用它ClientID

document.getElementById('<%=lblError.ClientID %>');

如果您的 javascript 文件是外部的,我通常不得不编写一种“初始化”javascript 方法来确保我的 ID 已设置属性

在您的 ASPX 页面上:

<script type="text/javascript">
    var lblError = null;
    function InitializeVariables()
    {
        if (lblError == null) // make sure you only do this once
        {
            lblError = document.getElementById("<%=lblError.ClientID %>");
        }
    }
</script>
<asp:Label 
    ID="lblError"
    class="NormLabel"
    runat="server" 
    style="color:red; visibility:hidden;"
    Text="Invalid Input."></asp:Label>

然后在您的 javascript 文件中,您必须调用InitializeVariables()以确保变量指向正确的 asp.net 控件

function performEvapCooledCircuit(txt)
{
    InitializeVariables();

    if (txt.value == null || isNaN(txt.value))
    {
        lblError.style.visibility = "visible";
    }
}
于 2011-01-04T16:19:21.887 回答
6

“猎人”提供了一种非常可靠的做事方式,但是,在我看来,更好的方法是使用控件上的“CliendIDMode”属性并将该属性设置为“静态”。这将使客户端和服务器 ID 相同。像这样:

<asp:TextBox ID="ServerAndClientId" runat="server" ClientIDMode="Static" />
于 2012-11-20T23:10:16.557 回答
2

标签的 ID 不是“lblError”。ASP.net 引擎更改了 ID。在浏览器中查看 HTML 源代码以找出真实 ID。

于 2011-01-04T16:19:35.543 回答
1

这不是标签的 HTML,而是一个 ASP.NET 控件,它将在响应中发送之前呈现为 HTML。ASP.NET WebForms 控件有时会更改它们创建的 HTML 的 ID。

查看网页的源代码以查看 HTML 元素的 id 在呈现的页面上是什么。

于 2011-01-04T16:21:21.083 回答
1

你可以使用这个:

document.getElementById('<%= lblError.ClientID %>').click()

从 ASP.NET 4.0 开始,您可以为您的元素使用ClientIDMode属性。如果将其设置为,Static则该ClientID值将设置为 ID 属性的值:

 <asp:Label ID="lblError" runat="server" ClientIDMode="Static" />

将呈现为如下所示:

<span id="lblError" name="ctl00$MasterPageBody$ctl00$Label1" />
于 2013-01-18T14:36:18.430 回答