代码如下:<div runat="server" id="div1" visible="false">
 <asp:Button ID="Button1" runat="server" Text="Button" />
</div>
当页面加载完毕后
我使用document.getElementById('Button1').style.display = "none";提示缺少对象,无法隐藏Button1使用jquery里的$("#Button1").hide()却可以成功隐藏虽然我知道visible="false"后里面的标签用document.getElementById是取不到的
但为什么jquery能取到?两个有什么区别呢?分别是什么原来啊,我调js断点也看不太明白,求高手讲解下

解决方案 »

  1.   

    runat="server"的控件中的visible="false"是服务器端处理的 解析完之后根本就不存在该元素了
    你还能获取得到? 既然是false了我不知道你是怎么显示出来 然后又要隐藏的
      

  2.   


    Lz是用的.NET Framework 版本是多少?你看下生成后的HTML代码,那个ID可能不是那样子了
      

  3.   

    全部代码是这样的,我现在不是说什么东西实现不了,而是想知道为什么
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="../JS/jquery-1.4.1.js" type="text/javascript"></script>
        <script>
            $(document).ready(function () {           //document.getElementById('Button1').style.display = ""; // 不能用
               $("#Button1").show(); // 能用 但为什么????????????        }); 
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div runat="server" id="div1" visible="false">
            <asp:Button ID="Button1" runat="server" Text="Button" />
        </div>
        </form>
    </body>
    </html>查看网页源代码 里面不存在Button1
      

  4.   

    。。那条
    $("#Button1").show(); //这会能用?你是以什么判断它能用的?显示出来了?你试下:alert($("#Button1").val());//应该也是undefined才对
      

  5.   

    <asp:Button ID="Button1" runat="server" style="display:block" Text="Button" />
    //js应该是直接在标签里取style所以找不到。而jquery访问style时,如果不存在它会建相应的属性。
      

  6.   


    楼上的,LZ的代码中,外围还有个runat="server"设置了visible="false"的div。解析完后的HTML,那个button应该是找不到的呀
      

  7.   

    4楼说的对,是我糊涂了,visible="false"后无论怎样通过id是取不到的,只是$("#Button1").show(); 这句话没有报错而已,我误认为是对的了
    话说,为什么$("#Button1").show(); 不会报错呢???????
      

  8.   

    document.getElementById("<%=Button1.ClientID%>").style.display = "none";
    这样试试,因为服务器控件的ID和普通控件的ID不一样,得转换成ClientID。
      

  9.   

    document.getElementById(id) 找不到会直接报错.
    而$(id)找不到是不会报错,也就是说它有检查id是否存在功能【详细看源码】。当id不存在对应$(id).show()函数也不会执行。