我正在尝试使用这样的javascript从内容页面(Asp.net)访问母版页中的控制
alert(document.getElementById('<%=((Label)Master.FindControl("lbl")).ClientID %>').value);
母版页中的控制如下,
<asp:Label ID="lbl" runat="server" Text="one"></asp:Label>
但不幸的是,它不起作用。我得到未定义的价值
我正在尝试使用这样的javascript从内容页面(Asp.net)访问母版页中的控制
alert(document.getElementById('<%=((Label)Master.FindControl("lbl")).ClientID %>').value);
母版页中的控制如下,
<asp:Label ID="lbl" runat="server" Text="one"></asp:Label>
但不幸的是,它不起作用。我得到未定义的价值
我注意到您实际上是在访问控件生成.value
的元素的字段,即. 这种类型的元素不会为该属性返回任何内容。如果您实际上是在尝试访问其文本,请使用:<asp:Label />
<span></span>
.value
alert(document.getElementById('<%=((Label)Master.FindControl("lbl")).ClientID %>').innerText);
或者
alert(document.getElementById('<%=((Label)Master.FindControl("lbl")).ClientID %>').innerHTML);
问题是母版页是一个命名容器,因此控件的客户端 id 接收一个前缀,该前缀是命名容器的 id。使用 JavaScript,很容易解决:
var elm = document.querySelector('[id$="lbl"]');
$= 表示,以。
在您的页面中包含jQuery并使用此脚本:
<script>
$(document).ready(function(){
alert($("#lbl").text());
});
</script>
这对我有用:(检查下面的代码)
alert(document.getElementById('<%=(Master.FindControl("lbl")).ClientID %>').innerText);
使用getElementById
对我不起作用。可以改用以下内容:
$find('<%=((Label)Master.FindControl("lbl")).ClientID %>');