根据其子内容为html表的每一行着色

时间:2016-09-26 15:38:19

标签: jquery html-table

如何在从PG数据库中获取这些信息的html页面中打印:

A 即可。一个包含许多行的表,其中每个行都有一个或多个子项

即可。这些子节点是使用非pk ID从SQL中提取的,其中1-parentID为n-childID

C 即可。并使用子项颜色为父行着色,其中: 如果2个孩子,他们两个都有" ACK = 1" - >父亲是1(颜色为绿色)。 IF 2个孩子,1个是ACK = 1而另一个ACK = -1,父亲是-1(颜色为红色)。

在HTML / PHP / javaApplet / Javascript / Jquery中 - >我对所使用的语言不感兴趣,如果有一天它可以工作将是惊人的。

Excel图片是为了展示我喜欢这张桌子的样子,尝试了一周以上,结果非常糟糕。

RowN-hidden由bootstrap的可折叠面板(或类似)使用。

编辑(2):

我桌子的html代码是:

<table>
<thead>
<th>Expand</th>
<th>Date</th>
<th>Identification</th>
<th>Expedition</th>
<th>Direction</th>
<th>MDN</th>
<th>ACK</th>
</thead>

<tbody>
<tr class=parentrow>
<td>+</td>
<td>27.09.2016</td>
<td>prost</td>
<td>qwa</td>
<td>sent</td>
<td>1</td>
<td>0</td>
</tr>
<tr class=childrow>
<td colspan=9><table><tr>
<td>prost 12 12 1 -1</td></tr>
</table></td></tr>

<tr class=parentrow>
<td>+</td>
<td>24.09.2016</td>
<td>wenon</td>
<td>pra</td>
<td>sent</td>
<td>0</td>
<td>0</td>
</tr>
<tr class=childrow>
<td colspan=9><table><tr>
<td>wenon 32 sent 1 1</td></tr>
<tr><td>wenon 35 sent 1 1</td></tr>
</table></td></tr>
</tbody></table>

父母的ACK和MDN不是孩子的ACK和MDN。

第一个查询将从表1中选择(日期,识别,探险,方向,mdn,ack) 第二个查询将从表2中选择(标识,探险方向,mdn,ack),其中表1的id类似于表2的id。

在这个例子中,html只显示ROW1和ROW2 该按钮将打开一个隐藏的<tr>,其结果为SQL2(colspan = 9以匹配其父级的长度)。

当孩子的ACK为1或-1时,父母必须继承颜色,而不是值,因为如果他们的ACK是相同的,就会出现这种情况。

如果其中一个孩子有负面的ACK,那么父母应该突出显示为错误(红色)以将注意力集中在孩子身上,我将使用+按钮打开。

在不久的将来,孩子们将拥有更多的价值观,而且可能没有mdn,但ACK将始终保持

enter image description here

1 个答案:

答案 0 :(得分:2)

我会假设你的表有这个HTML代码

<table id="tableId">
   <thead>
      <tr>
        <th>Expand</th>
        ....
         <th>ACK</th>
        ...
      <tr>
   </thead>
   <tbody>
      <tr>      
          <td>4</td>
             ...
          <td class="ACK">0</td>
              ...
      </tr>
      ....
   </tbody>
</table>

据我所知,所有带0值的ACK都是红色,1值是绿色的吗?然后标记所有ACK列tds,如上所述分配class="ACK",然后您可以执行以下操作

$(document).ready(function(){
    $('.ACK').each(function(index){
         var me = $(this);
         if(me.text() =='0'){
            me.closest('tr').css('background-color','red');
         }
         else if(me.text()=='1'){
            me.closest('tr').css('background-color','green');
         }
    });
});

这是一个有效的demo

如果您想将ACK与MDN列进行比较,(如果它们相同则为绿色,如果不是则为红色),则可以执行以下操作:

$(document).ready(function(){
    $('.ACK').each(function(index){
         var me = $(this);
         if(me.text() !== me.prev('td').text()){
            me.closest('tr').css('background-color','red');
         }
         else if(me.text()==me.prev('td').text()){
            me.closest('tr').css('background-color','green');
         }
    });
});

这是一个有效的demo

希望这会对你有所帮助