我的MasterPage中有一个文本框控件Super1。
我正在使用javascript从我的内容页面访问此控件,如下所示:
<asp:Content ID="ContentPage" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function Somethin() {
{
document.forms[0].elements['Super1'].value = "sdfsd";
//document.getElementById('<%=Super1.ClientID%>').value = "sdfsdf";
}
}
</script>
</asp:Content>
但是当页面加载时,它说没有找到Super1。我如何访问Super1?
答案 0 :(得分:0)
您必须确保文档已加载,请确保调用依赖于正在加载的DOM的函数。 E.g:
<script type="text/javascript">
window.onload = function() {
Somethin();
}
</script>
答案 1 :(得分:0)
在您的母版页的onload中添加以下代码:
string script = @"<script>
function Somethin() {
document.getElementById('" + Super1.ClientID + @"').value = 'sdfsd';
}
Somethin();
</script>";
if (!Page.ClientScript.IsClientScriptBlockRegistered("somethin_script_block"))
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "somethin_script_block", script);
}
这会将您的脚本添加到页面的末尾。
编辑:我刚刚意识到,您在javascript代码中直接使用控件ID。这可能会导致异常。我更新你的代码来解决它。
我希望这会有所帮助。
答案 2 :(得分:0)
从您发布的示例代码中,由于您说您正在使用控件,请检查您尝试获取的控件的呈现ID。根据我的经验,这个名字就像ctl100_masterpagename_namingcontainer_controlname那样疯狂......它也需要出现在js中。
Super1可能位于不同的命名容器中(母版页的控件集合)。您需要在母版页呈现期间在全局javascript变量中呈现控件的clientid,以便可以通过子页面中的javascript访问它,或者您需要获取对Masterpage的引用,在那里找到控件并写出您孩子页面中的客户端ID javascript ...
像...一样的东西。
如果文本框位于其自己的内容占位符
中var txtSuper1 = Master.FindControl(“ContentPlaceHolderName”)。FindControl(“Super1”)为文本框;
或者如果它不在内容持有者中 var txtSuper1 = Master.FindControl(“Super1”)作为文本框;
第三个选项可能是将控件公开为主页的属性(不确定) - 我的webforms已生锈。
答案 3 :(得分:0)
在母版页上,为控件声明一个javascript变量,例如:
<asp:TextBox id="Super1" runat="server"/>
...
<script type="text/javascript">
var txtSuper1 = document.getElementById('<%= Super1.ClientID %>');
</script>
使用ClientID属性非常重要,因为呈现控件的ID(在客户端上)将与服务器控件的ID不同(由于命名容器)。
现在,您可以从内容页面中声明的javascript访问文本框:
<asp:Content ID="ContentPage" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function Somethin()
{
txtSuper1.value = "sdfsd";
}
</script>
<a href="javascript:Somethin()">click me</a>
</asp:Content>
BTW:在你的代码中,函数Somethin(){{...}}
中有重复的大括号