none
使用js的时候出现“缺少对象”的错误提示 RRS feed

  • 问题

  • 代码如下:
    //页面上写的一个js
    <body >
            <script type="text/javascript">
            function getclientid(){
                var trid="<%= this.tr1.ClientID %>";
               
                return document.getElementById(trid);
                }
        </script>
        <form id="form1" runat="server">
    ……………………
    //这个是在一个控件里来获得tr1这个服务器端的tr(就是table的行)
    <ClientSideEvents EndCallback="function(s,e){
                if(grid.cpVisibleProperties){
                var trid=getclientid();
                trid.style.display='none';}
                }" />

    grid.cpVisibleProperties得到的是一个bool值,这个是没有问题的。tr1是用来显示错误信息的一个table的tr,其中包含一个label控件

    现在的情况是:当tr1是显示状态时,这里可以正常运行,不会出错。但是如果tr1处于隐藏状态则document.getElementById(trid)的值为null,而trid则是有值得。于是出现错误提示“缺少对象”

    请帮忙看看怎么回事
    2009年2月25日 6:04

答案

  • 你看一个浏览器的客户端源代码里面有
    var trid="<%= this.tr1.ClientID %>";


    <tr id="trid" 这个值没有。
    一般tr是多行的,你的函数
    function getclientid(){
                var trid="<%= this.tr1.ClientID %>";
               
                return document.getElementById(trid);
                }

    里面写了一个是不是有点问题啊?如果是多行,则需要在调用的时候传递参数,而不是在定义里写死

    另外,如果隐藏是通过display="none"实现的,则隐藏于不隐藏应当是一样的,不会造成错误。如果是服务器控件,使用tr1.Visible=false,则客户端不会呈现这个tr,会导致错误
    孟宪会
    • 已标记为答案 cnlearner 2009年2月26日 8:54
    2009年2月25日 6:21
    版主

全部回复

  • 你看一个浏览器的客户端源代码里面有
    var trid="<%= this.tr1.ClientID %>";


    <tr id="trid" 这个值没有。
    一般tr是多行的,你的函数
    function getclientid(){
                var trid="<%= this.tr1.ClientID %>";
               
                return document.getElementById(trid);
                }

    里面写了一个是不是有点问题啊?如果是多行,则需要在调用的时候传递参数,而不是在定义里写死

    另外,如果隐藏是通过display="none"实现的,则隐藏于不隐藏应当是一样的,不会造成错误。如果是服务器控件,使用tr1.Visible=false,则客户端不会呈现这个tr,会导致错误
    孟宪会
    • 已标记为答案 cnlearner 2009年2月26日 8:54
    2009年2月25日 6:21
    版主
  •  table里面只有这个tr是runat="server"的,而且他的id="tr1"
    2009年2月25日 6:51
  • 看客户端的html代码里面是否存在
    孟宪会
    2009年2月25日 9:43
    版主
  • 代码看起来没有问题. 
    DOT NET: http://blog.csdn.net/ChengKing
    2009年2月25日 11:59
    版主
  • 你的代码看起来像是使用了第三方的东西,另外你说的隐藏也没有指明是何种方法实现的隐藏。如果涉及第三方控件,最好去他们的论坛咨询
    孟宪会
    2009年2月25日 13:22
    版主
  • 一般来说server端的控件设置为visible=false 的   都不会产生html到浏览器
    这个时候要设置 css style   display:none 来代替


    就算首页不能显示30天内排行榜 回答总数也快接近top10了 5555
    努力奋斗 重回首页排行榜!!! 55555
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    2009年2月25日 14:37
  • 孟宪会 说:

    你的代码看起来像是使用了第三方的东西,另外你说的隐藏也没有指明是何种方法实现的隐藏。如果涉及第三方控件,最好去他们的论坛咨询


    孟宪会




    是devexpress的控件。多谢了。

    2009年2月26日 8:52