Joh*_*rad 15 javascript asp.net getelementbyid
我只是试图在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";
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的标签的html代码:
<asp:Label ID="lblError" class="NormLabel" runat="server"
style="color:red; visibility:hidden;" Text="Invalid Input."></asp:Label>
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,说对象预期?
hun*_*ter 20
ASP.NET将生成的ID不会是"lblError",因此您需要通过它来引用它 ClientID
document.getElementById('<%=lblError.ClientID %>');
Run Code Online (Sandbox Code Playgroud)
如果你的javascript文件是外部的,我通常不得不写一种"Init"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>
Run Code Online (Sandbox Code Playgroud)
然后在你的javascript文件中,你必须调用InitializeVariables()以确保你有变量指向正确的asp.net控件
function performEvapCooledCircuit(txt)
{
InitializeVariables();
if (txt.value == null || isNaN(txt.value))
{
lblError.style.visibility = "visible";
}
}
Run Code Online (Sandbox Code Playgroud)
"猎人"提供了一种非常可靠的做事方式,但是,在我看来,更好的方法是在控件上使用"CliendIDMode"属性并将该属性设置为"静态".这将使客户端和服务器ID相同.像这样:
<asp:TextBox ID="ServerAndClientId" runat="server" ClientIDMode="Static" />
Run Code Online (Sandbox Code Playgroud)