当前位置: 首页 > 知识库问答 >
问题:

使用Javascript类显示/隐藏表行

卞浩漫
2023-03-14

我有一个桌子,它的膨胀和折叠,但它变得太乱,无法使用它,IE和Firefox不能正常工作。

下面是JavaScript代码:

  function toggle_it(itemID){ 
      // Toggle visibility between none and '' 
      if ((document.getElementById(itemID).style.display == 'none')) { 
            document.getElementById(itemID).style.display = '' 
            event.preventDefault()
      } else { 
            document.getElementById(itemID).style.display = 'none'; 
            event.preventDefault()
      }    
  } 

和示例HTML:

<table>
    <tr>
        <td>Product</td>
        <td>Price</td>
        <td>Destination</td>
        <td>Updated on</td>
    </tr>
    <tr>
        <td>Oranges</td>
        <td>100</td>
        <td><a href="#" id="toggle" onClick="toggle_it('tr1');toggle_it('tr2')">+ On Store</a></td>
        <td>22/10</td>
    </tr>
    <tr id="tr1" style="display:none">
        <td></td>
        <td>120</td>
        <td>City 1</td>
        <td>22/10</td>
    </tr>
    <tr id="tr2" style="display:none">
        <td></td>
        <td>140</td>
        <td>City 2</td>
        <td>22/10</td>
    </tr>
    <tr>
        <td>Apples</td>
        <td>100</td>
        <td><a href="#" id="toggle" onClick="toggle_it('tr3');toggle_it('tr4')">+ On Store</a></td>
        <td>22/10</td>
    </tr>
    <tr id="tr3" style="display:none">
        <td></td>
        <td>120</td>
        <td>City 1</td>
        <td>22/10</td>
    </tr>
    <tr id="tr4" style="display:none">
        <td></td>
        <td>140</td>
        <td>City 2</td>
        <td>22/10</td>
    </tr>
</table>

问题是,我对每一个都使用一个ID,这是非常烦人的,因为我想为每个父级和很多父级都有很多隐藏行,所以要处理的ID太多了。IE和FireFox只显示第一个隐藏行,而不显示其他行。我怀疑发生这种情况是因为我将所有ID触发在一起使其工作。我认为如果我使用类而不是ID来确定隐藏行会更好。

我对所有这些都很陌生,所以请尝试用任何简单的方式来解释它。此外,我尝试了jQuery,但没有得到它。

共有1个答案

羊冠玉
2023-03-14

很难弄清楚您要用这个示例做什么,但实际上您在使用类方面的想法是正确的。我创建了一个JSFiddle来帮助演示一种稍微好一点的方法(我希望)。

这是小提琴:林克。

你所做的,不是与IDs一起工作,而是与类一起工作。在您的代码示例中,有橘子和苹果。我将它们视为产品类别(因为我不知道您的目的是什么),并使用它们自己的ID。因此,我用class=“cat1”class=“cat2”标记产品S。

我还用一个简单的.toggler类标记链接。在元素本身上具有onclick属性不是一个好的做法。您应该使用JavaScript在页面加载时“绑定”事件。我使用jQuery完成此操作。

$(".toggler").click(function(e){
    // you handle the event here
});

使用此格式,您将事件处理程序绑定到具有类toggler的链接的click事件。在我的代码中,我将data-prod-cat属性添加到toggler链接中,以指定它们应该控制哪些产品行。(这里解释了我使用data-*属性的原因。您可以谷歌“HTML5数据属性”获得更多信息。)

在事件处理程序中,我执行以下操作:

$('.cat'+$(this).attr('data-prod-cat')).toggle();

通过这段代码,我实际上试图创建一个类似$('.cat1')的选择器,这样我就可以为特定的产品类别选择行,并更改它们的可见性。我使用$(this).attr('data-prod-cat')this访问用户单击的链接的data-prod-cat属性。我使用jQuery切换函数,这样我就不必编写逻辑,如如果可见,则隐藏元素,否则使其可见就像您在JS代码中所做的那样。jQuery会处理这个问题。toggle函数执行它所说的操作,toggles指定元素的可见性。

我希望这足够说明问题。

 类似资料:
  • 问题内容: 对于我正在做的网站,我想加载一个div,然后隐藏另一个,然后有两个按钮可以使用JavaScript在div之间切换视图。 这是我当前的代码 替换div2的第二个功能不起作用,但第一个功能起作用。 问题答案: 如何显示或隐藏元素: 为了显示或隐藏元素,请操纵元素的style属性。在大多数情况下,您可能只想更改元素的属性: 或者,如果您仍然希望元素占用空间(例如,如果您要隐藏表格单元格),

  • 对于我正在做的一个网站,我想加载一个div并隐藏另一个,然后有两个按钮可以使用JavaScript在div之间切换视图。 这是我当前的代码 null null 取代div2的第二个函数不起作用,但第一个是。

  • 问题内容: 我一直在寻找一个很好的技巧,使隐藏/显示内容或仅具有CSS而没有javascript的列表。我已成功执行此操作: 并且它正在工作,但没有达到应有的效果。这是问题所在:显示内容时,您可以通过单击“页面上的任何位置”将其隐藏。如何禁用它?如何通过单击“隐藏”隐藏内容“仅”?先感谢您! 问题答案: 我不会使用复选框,而是使用您已经拥有的代码 CSS HTML 这样,仅在单击hide元素时隐藏

  • 问题内容: 我想显示一个带有控件的基本html表,以切换其他列的显示/隐藏: 因此,默认情况下,列1和列2将是唯一显示的列-但是,当您单击列1时,我希望1a和1b切换,与列2和2a和2b相同。我可能最终会有更多的列和很多行- 因此,当我进行测试时,任何JavaScript循环方法都太慢而无法使用。 似乎足够快的唯一方法是设置一些CSS,如下所示: 然后在表标题单元格上设置onClick函数调用,这

  • 问题内容: 按下后如何隐藏“编辑”链接?当我按下编辑键时,是否还可以隐藏“ lorem ipsum”文本? 问题答案:

  • 我尝试了下面的代码在移动和桌面上以不同的方式显示。但是两个句子同时显示。