Javascript 从内容页访问母版页中的控件

Javascript 从内容页访问母版页中的控件,javascript,asp.net,master-pages,content-pages,Javascript,Asp.net,Master Pages,Content Pages,我正在尝试使用如下javascript从内容页(Asp.net)访问母版页中的控件 alert(document.getElementById('<%=((Label)Master.FindControl("lbl")).ClientID %>').value); 警报(document.getElementById(“”).value); 母版页中的控件如下所示 <asp:Label ID="lbl" runat="server" Text="one"></

我正在尝试使用如下javascript从内容页(Asp.net)访问母版页中的控件

alert(document.getElementById('<%=((Label)Master.FindControl("lbl")).ClientID %>').value);
警报(document.getElementById(“”).value);
母版页中的控件如下所示

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


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

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

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

警报(document.getElementById(“”).innerHTML);
在页面中包含并使用以下脚本:

<script>
$(document).ready(function(){
    alert($("#lbl").text());
});
</script>

$(文档).ready(函数(){
警报($(“#lbl”).text();
});
这是我的工作:(检查下面的代码)

警报(document.getElementById(“”).innerText);

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

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

$=意味着,以.

结尾使用
getElementById
对我不起作用。可以使用以下选项代替:

$find('<%=((Label)Master.FindControl("lbl")).ClientID %>');
$find(“”);

它以什么方式不起作用?您是从.NET中获得
异常
,还是在警报中获得
未定义的值?该方法不是递归的,因此除非您的
lbl
控件是
Master
的直接子控件,否则将找不到它。那么解决方案是什么?我如何更正它?我得到了未定义的值为什么不使用纯javascript解决方案?jQuery对您帮助很大:
$(“#父”).find(“.controll类名”).val()。若你们给我们提供更多的信息,我们会给你们更好的答案。我知道它是有效的,我在一个项目中工作过,它工作得很好。我只是错过了一些东西,这就是为什么我要寻求帮助
var elm = document.querySelector('[id$="lbl"]');
$find('<%=((Label)Master.FindControl("lbl")).ClientID %>');