码迷,mamicode.com
首页 > Web开发 > 详细

页面JS获取不到控件ID

时间:2015-07-21 22:19:46      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:javascript   无法获取控件id   

         为了使页面更加的友好,我们不可避免的要在页面上使用JS,所以在页面上使用javascript获取控件ID是很常见的事情。但是最近在使用JS的使用,遇到了一件让我很头疼的事情,在获取控件ID时,抱错了,监控显示,获取不到控件ID

源代码:

	<script type="text/javascript">
			Function(){
	            var args = window.dialogArguments;
	            var serverTaskInfo = $("#hidTaskInfo").val();
	            if (serverTaskInfo == "") {
	                BindSelectorControl(args);
	            } else {
	                var task = Sys.Serialization.JavaScriptSerializer.deserialize(serverTaskInfo);
	                BindSelectorControl(task);
	            }
	            if (args.action === "readOnly") {
	                $find("CommonAutoCompleteWithSelectorControl1")._disabled = true;
	                $find("CommonAutoCompleteWithSelectorControl2")._disabled = true;
	                $find("CommonAutoCompleteWithSelectorControl1")._ouBtn.disabled = true;
	                $find("CommonAutoCompleteWithSelectorControl2")._ouBtn.disabled = true;
	            }
	        })
	    </script>

        首先分析可能是控件ID写错了,但是对比以后发现,名称拼写完全正确,看来不是拼写错误。

         再次分析,会不会是页面不识别jquery,换成原生的javascript看看行不行,结果还是一样,控件显示为undefined,也不是语言问题。

          百度之,结果百度居然没有我想要的答案。找了个大牛,大牛说,可能是你的JS有问题,你的JS执行的时候,你要获取的那个控件在页面上还没有渲染完毕,所以你获取不到。(果然是大牛啊)       

          百度了一下页面上JS最晚的执行事件是什么,度娘的答案是onload()事件,我原来是将代码直接写在了function()中,可能是这个原因,果断测试下。结果很是可惜,还是获取不到控件ID

          再次百度页面代码的执行顺序,可知,页面代码是按照先后顺序依次执行的,果断再次测试,将这段代码搬到了Body的脚部,也就是页面代码的最下边,测试结果还是不能令人满意。

        再次询问大牛,大牛说有个函数执行顺序非常晚,赶紧问之,是

Sys.Application.add_load(function() { })
函数。

         赶紧再试试。报错了,但是错误提示不一样,大牛说,需要注册一样东西,果断百度之,原来是这个玩意。

<asp:ScriptManager runat="server" ID="scriptManager1" EnableScriptGlobalization="true"
        EnablePartialRendering="true">
</asp:ScriptManager>

再次测试,成功了!

       完整的代码:

<head id="Head1" runat="server">
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager runat="server" ID="scriptManager1" EnableScriptGlobalization="true"
        EnablePartialRendering="true">
    </asp:ScriptManager>
<script type="text/javascript">
        Sys.Application.add_load(function () {
            var args = window.dialogArguments;
            var serverTaskInfo = $("#hidTaskInfo").val();
            if (serverTaskInfo == "") {
                BindSelectorControl(args);
            } else {
                var task = Sys.Serialization.JavaScriptSerializer.deserialize(serverTaskInfo);
                BindSelectorControl(task);
            }
            if (args.action === "readOnly") {
                $find("CommonAutoCompleteWithSelectorControl1")._disabled = true;
                $find("CommonAutoCompleteWithSelectorControl2")._disabled = true;
                $find("CommonAutoCompleteWithSelectorControl1")._ouBtn.disabled = true;
                $find("CommonAutoCompleteWithSelectorControl2")._ouBtn.disabled = true;
            }
        })
 </script>
    </form>
</body>

          注册的这个东西到底是何方圣神呢?它是一个脚本控制器,用来处理页面上所有组件及页面局部更新,生成相关的客户端代理脚本以便能够在JS中访问 Web Service,它是AJAX存在的基础,如果页面上使用到了AJAX,必须使用这个控制器,并且每个页面能且只能使用一次。

         这个事件是怎么回事呢?MSDN解释:在所有脚本都已加载,并且应用程序中的对象已创建并初始化之后引发。




版权声明:本文为博主原创文章,未经博主允许不得转载。

页面JS获取不到控件ID

标签:javascript   无法获取控件id   

原文地址:http://blog.csdn.net/u010942465/article/details/46991963

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!