基于MySQL日期值和今天的Javascript着色行

基于MySQL日期值和今天的Javascript着色行,javascript,mysql,Javascript,Mysql,我在我的页面上显示MySQL表结果,并且我试图突出显示下一个审阅日期早于今天的行,这些行应该是红色的(稍后我还需要另一种颜色,今天+10天应该是橙色)。我知道我需要使用Javascript来实现这一点,然而,我已经尝试了10多个解决方案,但都不起作用,你能帮我吗?下一个审核日期采用phpmyadmin(YYYY-MM-DD)中的日期格式 以下是我当前尝试的内容(我的表的id为table): var table=document.getElementById(“表”); 对于(var i=0;i状

我在我的页面上显示MySQL表结果,并且我试图突出显示下一个审阅日期早于今天的行,这些行应该是红色的(稍后我还需要另一种颜色,今天+10天应该是橙色)。我知道我需要使用Javascript来实现这一点,然而,我已经尝试了10多个解决方案,但都不起作用,你能帮我吗?下一个审核日期采用phpmyadmin(YYYY-MM-DD)中的日期格式

以下是我当前尝试的内容(我的表的id为table):

var table=document.getElementById(“表”);
对于(var i=0;i状态)
如果(现在>状态){
table.rows[i].style.background=“红色”;
} 
};
如果你需要更多的代码或解释,请注明,我会编辑这篇文章。非常感谢你的帮助

这就是桌子现在的样子(着色从未成功):

if($\u会话['user\u type']=='admin'){
回声'
更新
';
$sql=“选择*
从`资产`
按id订购”;
if(isset($\u GET['orderBy'])){
$orderby=$_GET['orderby'];
如果($orderby=='name')
{
$sql=“从“资产”中选择*按资产名称排序”;
}
elseif($orderby=='classification')
{
$sql=“按分类顺序从‘资产’中选择*”;
}
elseif($orderby=='tag')
{
$sql=“从“资产”中选择*按标记排序”;
}
elseif($orderby==“部门”)
{
$sql=“从‘资产’中选择*按部门排序”;
}
elseif($orderby=='nextreview')
{
$sql=“从“资产”中选择*按审核日期排序\u asc”;
}
elseif($orderby=='responsible')
{
$sql=“按责任人从‘资产’订单中选择*”;
}
}
if(!($result=mysqli_查询($conn,$sql)))
{die(“无法显示所需的数据”。mysqli_错误($conn));}
elseif(mysqli_num_行($result)>0){
而($result2=mysqli\u fetch\u数组($result))
{echo'
“.$result2[“资产名称”]”
“.$result2[“分类”]”
“.$result2[“标记”]”
“.$result2[“部门”]”
“.$result2[“审核日期”]”
“.$result2[“负责”]”
| 
';
}
回声';
}
当前外观:

  • 应具有表的ID,而不是一些包装器-请将THs包装在THAD中,将表的其余部分包装在TBODY中
  • 我使用类而不是背景色
  • 我使用querySelectorAll直接获取单元格
  • 我使用字符串比较。比日期比较快得多
向下滚动以获得与旧版IEs兼容的版本
进一步向下滚动可排序表格

//设置
常数pad=(num)=>(“0”+num).slice(-2);
const now=新日期();
const nowString=now.getFullYear()+“-”+pad(now.getMonth()+1)+“-”+pad(now.getDate());
//环路
//删除最近的(“tr”)。仅高亮显示单元格
[…document.querySelectorAll(“表trtd:n子(5)”)].forEach(单元格=>
cell.closest(“tr”).classList.toggle(“红色”,nowString>cell.textContent.trim())
);
.red{
背景颜色:红色
}
桌子{
边界塌陷:塌陷;
}
运输署{
边界:无;
}
tr th,td{
边框:1px纯黑;
填充:4px;
}

更新
2019-07-08
2019-07-09
2019-07-10
2019-07-11
2021-07-10
2022-07-11
  • 应具有表的ID,而不是一些包装器-请将THs包装在THAD中,将表的其余部分包装在TBODY中
  • 我使用类而不是背景色
  • 我使用querySelectorAll直接获取单元格
  • 我使用字符串比较。比日期比较快得多
向下滚动以获得与旧版IEs兼容的版本
进一步向下滚动可排序表格

//设置
常数pad=(num)=>(“0”+num).slice(-2);
const now=新日期();
const nowString=now.getFullYear()+“-”+pad(now.getMonth()+1)+“-”+pad(now.getDate());
//环路
//删除最近的(“tr”)。仅高亮显示单元格
[…document.querySelectorAll(“表trtd:n子(5)”)].forEach(单元格=>
cell.closest(“tr”).classList.toggle(“红色”,nowString>cell.textContent.trim())
);
.red{
背景颜色:红色
}
桌子{
边界塌陷:塌陷;
}
运输署{
边界:无;
}
tr th,td{
边框:1px纯黑;
填充:4px;
}

更新
2019-07-08
2019-07-09
2019-07-10
2019-07-11
2021-07-10
2022-07-11

当其他人开始回答时,我将发布我讨论的内容
var table = document.getElementById("table");
      for(var i = 0; i < table.rows.length; i ++) {
        var status = new Date(table.rows[i].cells[4].innerHTML).getTime();
        var now = new Date().getTime();
        console.log(now>status)
        if (now>status) { 
            table.rows[i].style.background = "red";
        } 
        };
if ($_SESSION['user_type'] == 'admin') {
    echo '<div class="table" id="table"> <table>
        <tr>
        <th>
            <a href="?orderBy=name">Asset name</a>
        </th>
        <th>
            <a href="?orderBy=classification">Classification</a>
        </th>   
        <th>
            <a href="?orderBy=tag">Tag</a>
        </th>
        <th>
            <a href="?orderBy=department">Department</a>
        </th>   
        <th>
            <a href="?orderBy=nextreview">Next review date</a>
        </th>   
        <th>
            <a href="?orderBy=responsible">Responsible</a>
        </th>   
        <th>Update</th>
        </tr>';


    $sql = "SELECT * 
    FROM `assets`
    ORDER BY id";

    if (isset($_GET['orderBy'])) {
        $orderby = $_GET['orderBy'];

        if ($orderby == 'name')
        {
            $sql = "SELECT * FROM `assets`ORDER BY Asset_name";
        }
        elseif ($orderby == 'classification')
        {
            $sql = "SELECT * FROM `assets`ORDER BY Classification";
        }
        elseif ($orderby == 'tag')
        {
            $sql = "SELECT * FROM `assets`ORDER BY Tag";
        }
        elseif($orderby == 'department')
        {
            $sql = "SELECT * FROM `assets`ORDER BY Department";
        }
        elseif($orderby == 'nextreview')
        {
            $sql = "SELECT * FROM `assets` ORDER BY Review_date asc";
        }
        elseif($orderby == 'responsible')
        {
            $sql = "SELECT * FROM `assets`ORDER BY Responsible";
        }
    }
    if (!($result=mysqli_query($conn, $sql)))
    { die("Could not show the required data" . mysqli_error($conn));}
    elseif (mysqli_num_rows($result) > 0) {

        while($result2=mysqli_fetch_array($result))
        {echo '<tr>
        <td>'.$result2["Asset_name"].'</td>
        <td>'.$result2["Classification"].'</td>
        <td>'.$result2["Tag"].'</td>
        <td>'.$result2["Department"].'</td>
        <td class="status">'.$result2["Review_date"].'</td>
        <td>'.$result2["Responsible"].'</td>
        <td><a href="editassets.php?id='.$result2['id'].'">Edit</a> | <a href="deleteassets.php?id='.$result2['id'].'" onclick="return confirm(\'Do you want to delete this asset?\');">Delete</a></td>
        </tr>';
        }
        echo '</table></div>';
        }
<div class="table" id="table"> <table>
var table = document.getElementById("table");
<div class="table"> <table  id="table">
var table = document.getElementById("table").firstElementChild;