关于visible="false"使用document.getElementById的问题

毛毛虫的爱 2012-09-06 02:46:59
代码如下:

<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断点也看不太明白,求高手讲解下
...全文
366 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
scscms太阳光 2012-09-06
  • 打赏
  • 举报
回复
document.getElementById(id) 找不到会直接报错.
而$(id)找不到是不会报错,也就是说它有检查id是否存在功能【详细看源码】。当id不存在对应$(id).show()函数也不会执行。
  • 打赏
  • 举报
回复
document.getElementById("<%=Button1.ClientID%>").style.display = "none";
这样试试,因为服务器控件的ID和普通控件的ID不一样,得转换成ClientID。
毛毛虫的爱 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
。。。。。那条
$("#Button1").show(); //这会能用?你是以什么判断它能用的?显示出来了?

你试下:alert($("#Button1").val());//应该也是undefined才对
[/Quote]
4楼说的对,是我糊涂了,visible="false"后无论怎样通过id是取不到的,只是$("#Button1").show(); 这句话没有报错而已,我误认为是对的了
话说,为什么$("#Button1").show(); 不会报错呢???????
泡泡鱼_ 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
<asp:Button ID="Button1" runat="server" style="display:block" Text="Button" />
//js应该是直接在标签里取style所以找不到。而jquery访问style时,如果不存在它会建相应的属性。
[/Quote]

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


scscms太阳光 2012-09-06
  • 打赏
  • 举报
回复
<asp:Button ID="Button1" runat="server" style="display:block" Text="Button" />
//js应该是直接在标签里取style所以找不到。而jquery访问style时,如果不存在它会建相应的属性。
泡泡鱼_ 2012-09-06
  • 打赏
  • 举报
回复
。。。。。那条
$("#Button1").show(); //这会能用?你是以什么判断它能用的?显示出来了?

你试下:alert($("#Button1").val());//应该也是undefined才对
毛毛虫的爱 2012-09-06
  • 打赏
  • 举报
回复
全部代码是这样的,我现在不是说什么东西实现不了,而是想知道为什么
<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
泡泡鱼_ 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
代码如下:

HTML code

<div runat="server" id="div1" visible="false">
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>



当页面加载完毕后
我使用document.getElementById('Button1').style.dis……
[/Quote]

Lz是用的.NET Framework 版本是多少?

你看下生成后的HTML代码,那个ID可能不是那样子了
oggmm 2012-09-06
  • 打赏
  • 举报
回复
runat="server"的控件中的visible="false"是服务器端处理的 解析完之后根本就不存在该元素了
你还能获取得到? 既然是false了我不知道你是怎么显示出来 然后又要隐藏的

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧