我们可以在`<tr></tr>`之后使用嵌套表吗?

Posted

技术标签:

【中文标题】我们可以在`<tr></tr>`之后使用嵌套表吗?【英文标题】:Can we use nested table after the `<tr></tr>`? 【发布时间】:2019-01-13 23:53:37 【问题描述】:

我在表格列表中显示来自数据库的记录。此外,我在每一行都有一个跟进按钮,如果任何用户点击跟进按钮,则会为特定用户打开一个包含详细信息的弹出窗口。

或任何其他想法来处理这个问题?

我尝试使用类似的东西

<table>
<thead><tr><th></th></tr></thead>
<tbody>
<tr><td></td></tr>

<div style="display:none">
<table>
<thead><tr><th></th></tr></thead>
<tbody>
<tr><td></td></tr>
</tbody>
</table>
</div>

</tbody>
</table>

完整代码

        <!DOCTYPE html>
            <html>
            <head>
                <title></title>
            </head>
            <body>

                <table border="1">
                    <thead>
                        <tr>>
                        <th>Name</th>
                        <th>Products</th>
                        <th>Qty</th>
                        <th>Order Id</th>
                        <th>Mobile </th>
                        <th>Shipping address</th>
                    </tr>
                    </thead>
                    <tbody>
                        <?php  $n=1;
                         foreach ($cust_personal as $row)  
                          $encryption_id=base64_encode($this->encryption->encrypt($row->o_id));//encrpt the id 
                            ?>
                            <tbody>
                            <tr>
                              <td><?php echo $n;?></td>
                              <td><?php echo $row->c_firstname;?>&nbsp; <?php echo $row->c_lastname;?></td>
                              <td><?php echo $row->o_product_brandname;?></td>    
                              <td><?php echo $row->o_product_qty;?></td>  
                              <td><?php echo $row->o_order_no;?></td>
                              <td><?php echo $row->c_mobileno;?></td>  
                              <td><?php echo $row->c_s_address;?></td>
        <td> <a  href="javascript:void(0)" class="table_icon pending" onclick="approve(this)" data-id="<?=$row->o_id;?>"> <span>Pending</span></a>
        <a href="<?php echo site_url('Customer_control/get_customer_view?key='.$encryption_id)?>" class="table_icon view">View</a> 
        <a href="javascript:void(0)" class="table_icon archive" onclick="followup(this)" data-id="<?=$row->o_id;?>">Followup</a>
                        </tr>

     <div id="popup-<?=$row->o_id;?>" style="display: none;" class="class="view_popup_profile">
      <div class="profile_content">
    <div class="profile_header clearfix">
                <table border="1">
                    <thead><th>sub</th></thead>
                    <tbody><tr><td>maths</td></tr></tbody>
                </table>
</div></div>
                </div>
                       <?php  $n++; ?> 
                    </tbody>
                </table>
            <script type="text/javascript">
                function followup(obj) 
            
                var id = $(obj).data('id');
                //console.log(id);
                $("#popup-"+id).show();  
            
            </script>
            </body>
            </html>

这是我得到的输出。

为什么我需要一个嵌套表,因为当我添加以下代码并单击后续按钮时,我会全屏显示弹出窗口。

</tr>
 <div id="popup-<?=$row->o_id;?>" style="display: none;">
    <!--more details here-->
      </div>
</tbody>
</table>

如果我在弹出窗口中添加了一个表格来显示以下列表,那么它就不起作用了。

    </tr>
     <div id="popup-<?=$row->o_id;?>" style="display: none;">
            <table border="1">
                    <thead><th>sub</th></thead>
                    <tbody><tr><td>maths</td></tr></tbody>
                </table>
</div>
    </tbody>
    </table>

css

        .view_popup_profile 
    position: fixed; /* Stay in place */
    z-index: 9; /* Sit on top */
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
    -webkit-animation-name: fadeIn; /* Fade in the background */
    -webkit-animation-duration: 0.4s;
    animation-name: fadeIn;
    animation-duration: 0.4s;

/* Modal Content */
.profile_content 
    position: fixed;
    top: 25%;
    background-color: #fefefe;
    width: 100%;
    -webkit-animation-name: slideIn;
    -webkit-animation-duration: 0.5s;
    animation-name: slideIn;
    animation-duration: 0.5s;
    max-width: 922px;
    margin: auto;
    left: 0;
    right: 0;
    box-shadow: 0 0 15px rgba(0,0,0,.3);

/* The Close Button */

.profile_header 
    padding: 1px 20px;
    background-color: #fafafc;
    color: white;
    /* min-height: 58px; */
    border-bottom: 1px solid #f7f7f7;
    display: block;
    width: 100%;

.profile_header:after 
    content: '';
    width: 0;
    height: 0;
    border-left: 17px solid transparent;
    border-right: 17px solid transparent;
    border-top: 16px solid #f7f7f7;
    position: absolute;

.profile_body 
    padding: 35px 50px;

.profile_footer 
    padding: 0;
    background-color: #fdfdfe;
    color: #858585;

pcolor: #000;
    /* Add Animation */
    @-webkit-keyframes slideIn 
 from 
 top: -500px;
 opacity: 0

 to 
 top:25%;
 opacity: 1


 @keyframes slideIn 
 from 
 top: -500px;
 opacity: 0

 to 
 top:25%;
 opacity: 1


 @-webkit-keyframes fadeIn 
 from 
 opacity: 0

 to 
 opacity: 1


 @keyframes fadeIn 
 from 
 opacity: 0

 to 
 opacity: 1


【问题讨论】:

是的,您可以嵌套一个表格,但它必须位于其中一个表格单元格内,介于 &lt;td&gt;&lt;/td&gt; 之间或介于 &lt;th&gt;&lt;/th&gt; 之间。这就是表格的工作方式:所有内容都需要在标题或数据单元格中。 @lurker,我尝试使用 我的弹出代码,但它在表格中创建了额外的空间。 您能告诉我们输出是什么(带有屏幕截图)以及您希望它是什么样子吗?你没有提供细节/细节。 @FunkFortyNiner,好的,我会详细解释。请在我更新我的问题的那一刻给我。 好的。事实上,请阅读此developer.mozilla.org/en-US/docs/Learn/HTML/Tables/Advanced - 有嵌套表的示例。实际上,我自己就在那个领域lol!我只是在给自己上一门进修课程,就像它一样。是的,即使我有时也不得不自己再读一遍:-) 【参考方案1】:

您当然可以制作嵌套表格。在td 标记之前,让所有内容都像普通表格一样。在这里面,制作表格标签和所有东西。你所做的首先是糟糕的缩进(我在 JSFiddle 中整理过

这是表格单元格的样子:

<td>
    <table>
      <thead>
        <th>sub</th>
      </thead>
      <tbody>
        <tr>
          <td>maths</td>
        </tr>
      </tbody>
    </table>
</td>

您还可以使用具有相似结果的 colspan 和 rowspan,以防止被复杂的设计冲昏头脑。

<tr>
 <td rowspan = 2>10</td>
 <td> 10 </td>
</tr>
<tr>
 <th>sub</th>
</tr>
<tr>
 <td>math>
</tr>

【讨论】:

我很确定他们想要在这里有一些动态的东西。这实际上只是一个“HTML 101”示例。并且没有任何事情没有说(在 cmets 中)。我不会对此投反对票,但我当然也不会投赞成票; 诚实 @FunkFortyNiner 我正在写这个答案,而另一个答案已经发布。另外,他问怎么做嵌套表,我回答了。 哦,我对那个马文没有意见。我只是感觉他们正在寻找动态解决方案,而不是静态解决方案。 @FunkFortyNiner 我还要补充一点,他们可以使用 col 和 row span 而不是嵌套表作为建议,但我必须先发布我的答案的第一部分。 如果你的意思是用户交互、数据、客户端和php,那么你是对的。我没有使用 PHP 的经验,所以我只是想给他一个大纲,说明他应该做什么。【参考方案2】:

是的,您绝对可以在表格中添加表格,但请记住将它们添加到表格单元格中,即&lt;td&gt;&lt;/td&gt; 以下是参考链接,不要害怕尝试! 参考:https://www.yourhtmlsource.com/tables/nestingtables.html (ps.如果您担心在单元格中创建额外的空格,您可以在 css 中修改单元格或嵌套表格的样式,例如调整边距或填充。 插件: 您可以尝试使用 jquery 从单击的链接中获取 data 并从链接中删除 onclick=followup(this)

将此添加到您的脚本中并尝试一下:

$(".archive").on('click',function()
        var id = $(this).data('id');
        $("#popup-"+id).show();
)

【讨论】:

是的,我在上传问题之前阅读了这篇文章。我试过
sub
数学
你想在表格单元格中实现什么?弹出模式还是嵌套表? 我为空间添加了样式 display:none 但这不是单元格,这是我必须在全屏上覆盖的弹出窗口。我在问题中添加了我需要一个弹出窗口。或者有没有其他方法可以处理这个问题? 那你为什么要把它们放在桌子上呢?只需将它们放在 HTML 的末尾即可。 @Mike,如果我在 HTML 的末尾添加,那么当我点击后续按钮时,它只会说最后一个 id 值

以上是关于我们可以在`<tr></tr>`之后使用嵌套表吗?的主要内容,如果未能解决你的问题,请参考以下文章

div+css中的tr跟td是啥?

如何将超链接添加到表格行 <tr>

使用 jquery 和 js 将 <td> 元素动态添加到 <tr> 元素中

JS怎样让表格每个tr的第一个td按照1,2,3,4,5.....循环排序

tmobst4

我可以使用 Jquery 在动态表中插入结束 </tr> 标记和开始 <tr> 标记吗?