2

可能重复:
为什么 jQuery 或诸如 `getElementByID` 之类的 DOM 方法找不到元素?

为这个愚蠢的问题道歉,但我没有得到我想要的。我正在使用以下代码来更改表格的可见性。

<script type="text/javascript"> 
   document.getElementById('<%= tblEnablePreferredZerker.ClientID %>').style.display = "none";
</script>
<table class="style1" id="tblEnablePreferredZerker" >
   <tr></tr>
</table>

有什么错误吗?或任何其他方法来做到这一点?或者使用 jQuery 可以轻松实现吗?谢谢,

4

3 回答 3

4

您正在尝试使用服务器不可访问的 ClientID 访问此表的 ID,您需要在表标记中添加 runat="server"。

<table class="style1" id="tblEnablePreferredZerker" runat="server">
   <tr></tr>
</table>

你是trying to access the element that is not yet available。将您的脚本放在您尝试访问的表格之后或之前,closing body tag以便您在使用之前准备好每个 html 元素。document.ready如果要放置在 html 元素之前,也可以使用jquery 事件。

将脚本放在要访问的元素下方。

<table class="style1" id="tblEnablePreferredZerker" >
   <tr></tr>
</table>

<script type="text/javascript"> 
   document.getElementById('<%= tblEnablePreferredZerker.ClientID %>').style.display = "none";
</script>

在关闭body标签之前放置脚本

<!-- your thml -->

<script type="text/javascript"> 
   document.getElementById('<%= tblEnablePreferredZerker.ClientID %>').style.display = "none";
</script>
</body>

使用 jQuery文档.ready

<script type="text/javascript"> 
  $(document).ready(function() {
      document.getElementById('<%= tblEnablePreferredZerker.ClientID %>').style.display =  "none";
   });       
</script>
于 2012-12-25T07:58:02.833 回答
1

附上您的脚本,$(document).ready()因为脚本运行时该元素不存在。& 一定要包括 jQuery。

<script type="text/javascript"> 
   $(document).ready(function() {
    $('#<%= tblEnablePreferredZerker.ClientID %>').hide();
   });
</script>
<table class="style1" id="tblEnablePreferredZerker" >
   <tr></tr>
</table>
于 2012-12-25T07:58:39.590 回答
0

你已经标记了 jQuery,所以你不妨使用它。

你可以$(document).ready()这样使用:

/* load jQuery first! */
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

<script type="text/javascript"> 
    $(document).ready(function() {
        document.getElementById('<%= tblEnablePreferredZerker.ClientID %>').style.display = "none";
    });
</script>

仅当加载此文档中的所有元素时才会触发。

于 2012-12-25T08:01:19.520 回答