【问题标题】:Change color text if values are different (only CSS and jquery)如果值不同,则更改颜色文本(仅 CSS 和 jquery)
【发布时间】:2022-01-20 13:05:47
【问题描述】:

我的代码有以下几行:

<div class="verizon-data-duplicate-device-key-89148000004605691537 k-content k-state-active" style="float: left; opacity: 1; display: block;" id="3cf455cc-9777-446b-b733-c60795e419e7-3" role="tabpanel" aria-expanded="true">
    <table style="border-collapse: collapse; padding: 3px; border: 1px solid grey;">
        <tbody>
            <tr>
                <td colspan="2">
                    Verizon Information:
                </td>
            </tr>
            <tr>
                <td style="text-align:right;">
                    Account Name
                </td>
                <td>
                    <span>0442047510-00001</span><br>
                    <span>0442047510-00001</span><br>
                </td>
            </tr>
            <tr>
                <td style="text-align:right;">
                    Billing Cycle End Date
                </td>
                <td>
                    <span>2021-07-01T00:00:00</span><br>
                    <span>2022-01-12T00:00:00</span><br>
                </td>
            </tr>
            <tr>
                <td style="text-align:right;">
                    Carrier Name
                </td>
                <td>
                    <span>null</span><br>
                    <span>null</span><br>
                </td>
            </tr>
            <tr>
                <td style="text-align:right;">
                    Service Plan
                </td>
                <td>
                    <span>40515x48526x75802x84777</span><br>
                    <span>M2MPublicDynamic</span><br>
                </td>
            </tr>
        </tbody>
    </table>
</div>

页面有许多不同的类值键:

div class="verizon-data-duplicate-device-key-**89148000004605691537** k-content k-state-active"

其中 89148000004605691537 是可变的

当相同 td 的 span 内的值不同时,我想将文本颜色更改为红色。

例如:

    <td>
        <span>2021-07-01T00:00:00</span><br>
        <span>2022-01-12T00:00:00</span><br>
    </td>

应该是红色的

但是

        <td>
            <span>0442047510-00001</span><br>
            <span>0442047510-00001</span><br>
        </td>

不应该是红色的。

并且比较应该只在同一个 td 内。 可以添加任何 css 类。

如何实现?

【问题讨论】:

  • 到目前为止你尝试过什么?
  • @OlegSh 您只想要计费周期结束日期比较还是任何具有两个跨度的单元格?

标签: html jquery css


【解决方案1】:

  $("table td").map(function(e) {
        if($(this).children("span").length){
            if($(this).children("span").contents()[0].textContent != $(this).children("span").contents()[1].textContent){
                $(this).addClass("text-danger"); 
            }
        }
    });
.text-danger {
    color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="verizon-data-duplicate-device-key-89148000004605691537 k-content k-state-active" style="float: left; opacity: 1; display: block;" id="3cf455cc-9777-446b-b733-c60795e419e7-3" role="tabpanel" aria-expanded="true">
    <table style="border-collapse: collapse; padding: 3px; border: 1px solid grey;" border="1">
        <tbody>
            <tr>
                <td colspan="2">
                    Verizon Information:
                </td>
            </tr>
            <tr>
                <td style="text-align:right;">
                    Account Name
                </td>
                <td>
                    <span>0442047510-00001</span><br>
                    <span>0442047510-00001</span><br>
                </td>
            </tr>
            <tr>
                <td style="text-align:right;">
                    Billing Cycle End Date
                </td>
                <td>
                    <span>2021-07-01T00:00:00</span><br>
                    <span>2022-01-12T00:00:00</span><br>
                </td>
            </tr>
            <tr>
                <td style="text-align:right;">
                    Carrier Name
                </td>
                <td>
                    <span>null</span><br>
                    <span>null</span><br>
                </td>
            </tr>
            <tr>
                <td style="text-align:right;">
                    Service Plan
                </td>
                <td>
                    <span>40515x48526x75802x84777</span><br>
                    <span>M2MPublicDynamic</span><br>
                </td>
            </tr>
        </tbody>
    </table>
</div>

【讨论】:

    【解决方案2】:

    //searches cells containing two spans
    //if the two spans don't have the same text content, add the class to
    //the spans to color the text red
    $('td').each(function(){       
          const $td = $(this);
          const $spans = $td.find('span');
         
          if($spans.length === 2){
              if($spans[0].textContent !== $spans[1].textContent){
                  $spans[0].classList.add('color-red');
                  $spans[1].classList.add('color-red');
              }
          }
    });
    .color-red{
      color:red;
    }
    <div class="verizon-data-duplicate-device-key-89148000004605691537 k-content k-state-active" style="float: left; opacity: 1; display: block;" id="3cf455cc-9777-446b-b733-c60795e419e7-3" role="tabpanel" aria-expanded="true">
        <table style="border-collapse: collapse; padding: 3px; border: 1px solid grey;">
            <tbody>
                <tr>
                    <td colspan="2">
                        Verizon Information:
                    </td>
                </tr>
                <tr>
                    <td style="text-align:right;">
                        Account Name
                    </td>
                    <td>
                        <span>0442047510-00001</span><br>
                        <span>0442047510-00001</span><br>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:right;">
                        Billing Cycle End Date
                    </td>
                    <td>
                        <span>2021-07-01T00:00:00</span><br>
                        <span>2022-01-12T00:00:00</span><br>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:right;">
                        Carrier Name
                    </td>
                    <td>
                        <span>null</span><br>
                        <span>null</span><br>
                    </td>
                </tr>
                <tr>
                    <td style="text-align:right;">
                        Service Plan
                    </td>
                    <td>
                        <span>40515x48526x75802x84777</span><br>
                        <span>M2MPublicDynamic</span><br>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
    
    <script
      src="https://code.jquery.com/jquery-3.6.0.slim.min.js"
      integrity="sha256-u7e5khyithlIdTpu22PHhENmPcRdFiHRjhAuHcs05RI="
      crossorigin="anonymous"></script>

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 2018-02-15
      相关资源
      最近更新 更多