【问题标题】:Unable to select table id in javascript [duplicate]无法在javascript中选择表ID [重复]
【发布时间】:2012-12-25 07:56:45
【问题描述】:

可能重复:
Why does jQuery or a DOM method such as `getElementByID` not find the element?

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

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

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

【问题讨论】:

  • 尝试将script标签放在table标签之后。
  • @ryadavilli:仍然出现错误。 "当前上下文中不存在名称 'tblEnablePreferredZerker'"

标签: javascript c#-4.0 asp.net-4.0


【解决方案1】:

您正在尝试使用服务器不可访问的 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 元素。如果你想放在你的 html 元素之前,你也可以使用document.ready 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 document.ready

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

【讨论】:

  • 但我使用的是母版页,所以这里没有正文标签?
  • 使用document.ready,我已经更新了我的答案,见最后一节。
  • 我用过这个但是还是有错误:(
  • 您的表在服务器不可访问,因为您没有 runat="server" 添加此属性并再次检查。
  • 哦,是的,它解决了问题...谢谢。
【解决方案2】:

将您的脚本包含在$(document).ready() 中,因为脚本运行时该元素不存在。并确保包含 jQuery。

<script type="text/javascript"> 
   $(document).ready(function() {
    $('#<%= tblEnablePreferredZerker.ClientID %>').hide();
   });
</script>
<table class="style1" id="tblEnablePreferredZerker" >
   <tr></tr>
</table>

【讨论】:

  • @Engineer 嗯。我只是在没有修改代码的情况下添加了$(document).ready()。现在将编辑我的答案。谢谢
  • 仍然出现错误-“名称 'tblEnablePreferredZerker' 在当前上下文中不存在”
  • @RajeevDiboliya 好吧,您的 asp 代码似乎有错误,尽管我对 asp 不太了解。这会工作(没有asp):$('#tblEnablePreferredZerker').hide();
【解决方案3】:

你已经标记了 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>

只有当这个文档中的所有元素都被加载时才会触发。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 2011-09-07
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    相关资源
    最近更新 更多