2

我正在尝试使用这样的javascript从内容页面(Asp.net)访问母版页中的控制

alert(document.getElementById('<%=((Label)Master.FindControl("lbl")).ClientID %>').value);

母版页中的控制如下,

 <asp:Label ID="lbl" runat="server" Text="one"></asp:Label>

但不幸的是,它不起作用。我得到未定义的价值

4

5 回答 5

2

我注意到您实际上是在访问控件生成.value的元素的字段,即. 这种类型的元素不会为该属性返回任何内容。如果您实际上是在尝试访问其文本,请使用:<asp:Label /><span></span>.value

alert(document.getElementById('<%=((Label)Master.FindControl("lbl")).ClientID %>').innerText);

或者

alert(document.getElementById('<%=((Label)Master.FindControl("lbl")).ClientID %>').innerHTML);
于 2014-03-12T17:41:53.923 回答
1

问题是母版页是一个命名容器,因此控件的客户端 id 接收一个前缀,该前缀是命名容器的 id。使用 JavaScript,很容易解决:

var elm = document.querySelector('[id$="lbl"]');

$= 表示,以。

于 2014-11-27T13:32:10.767 回答
0

在您的页面中包含jQuery并使用此脚本:

<script>
$(document).ready(function(){
    alert($("#lbl").text());
});
</script>
于 2014-03-12T17:56:10.497 回答
0

这对我有用:(检查下面的代码)

alert(document.getElementById('<%=(Master.FindControl("lbl")).ClientID %>').innerText);
于 2014-11-27T12:56:06.410 回答
0

使用getElementById对我不起作用。可以改用以下内容:

$find('<%=((Label)Master.FindControl("lbl")).ClientID %>');
于 2017-12-07T08:19:00.540 回答