Javascript 有没有办法在六小时后删除HTML元素?

Javascript 有没有办法在六小时后删除HTML元素?,javascript,jquery,html,Javascript,Jquery,Html,我有一张上面有单词NEW的图片,用来表示一个新的文档已经发布到我们的网站上。我想让jQuery在发布6小时后删除图片。我该怎么做呢 以下是要素: <tr class="pointer"> <td> <a href="~/DocumentPath" target="_blank"></a> <img class="germ" src="~/Image" width="40px" />

我有一张上面有单词NEW的图片,用来表示一个新的文档已经发布到我们的网站上。我想让jQuery在发布6小时后删除图片。我该怎么做呢

以下是要素:

<tr class="pointer">
    <td>
        <a href="~/DocumentPath" target="_blank"></a>
        <img class="germ"  src="~/Image" width="40px" />
        <i class="created" hidden="hidden">April 3, 2020 13:13:00</i>
        Document Title
    </td>
    <td>PDF</td>
    <td>March 2020</td>
</tr>
如您所见,我有一个隐藏元素,用于指定文档发布到网站的时间。我需要从标签中的时间起6小时后删除标签


如何使用jQuery或JavaScript实现这一点?

这最好在服务器端完成。您希望这样做的方式假设用户将在6个多小时内拥有相同的页面,或者以相同的状态返回此页面,这是非常不可能的

我要做的是为created添加一个属性,并将其设置为Date.now的默认时间,然后让前端代码查找创建的值是否小于6小时前1000*60*60*6毫秒

如果是,则显示“新”图形。如果没有,就不要

另一种方法是使新图形的默认显示为true,这样您就不必更新服务器端的内容,而这些内容可能更为固定:

让createdTime=new Datedocument.queryselector'i.hidden'.textContent; 如果Date.now-createdTime>1000*60*60*6{ //隐藏新图形的代码 }
免费多花两分钱:我会在隐藏的I元素中添加一个id属性,以确保您只选择了该元素,而不是选择了可能具有相同类的其他元素。既然您询问如何使用JavaScript或JQuery执行此操作,这就是方法

我还提供了一个3秒钟的示例来说明它确实有效

window.setTimeoutfunction{ document.getElementById'sixHours'。outerHTML=; }, 2160000; window.setTimeoutfunction{ document.getElementById'threeSeconds'。outerHTML=; }, 3000; 这将在六小时后移除 这将在三秒钟后删除使用setTimeout,但请记住,人们不太可能在一个页面上坐6小时,这意味着一旦离开,这将失败。每次刷新时,您都必须更改发送的时间

常数测试=真; 如果测试{ //开始-假测试日期 const tmpNow=新日期; document.querySelectori.created.innerHTML=tmpNow.toutString; //结束-假测试日期 } const d=document.querySelectori.created.innerHTML; const dd=新日期; 如果测试{ dd.setseconddd.getSeconds+3; }否则{ dd.setHoursdd.getHours+6; } const ddd=dd.getTime; const now=Date.now; 如果ddd现在<{ 太晚了; } const dt=Math.maxddd-now,0; 设置超时=>{ const img=document.querySelectorimg.germ; img.parentNode.removeChildimg; },dt; 2020年4月3日13:13:00 2020年3月21日果阿-阿拉斯加企业现在有资格获得SBA经济伤害灾难贷款2 PDF 2020年3月
您需要使用Date将字符串转换为日期对象:

new Date("April 3, 2020 13:13:00");
这将创建一个日期对象,但由于没有时区偏移,脚本可能采用UTC。您的结果可能是:

"2020-04-03T13:13:00.000Z"
<>考虑指定时区。一些浏览器将假定用户为本地时区

$function{ 函数getDatecObj,tz{ 如果tz==未定义{ tz=GMT-07:00; } var str=cObj.text.trim++tz; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date var nDt=新日期STR; 控制台。logstr,无损检测; 返回无损检测; } 函数gethourspassthn{ // https://stackoverflow.com/questions/19225414/how-to-get-the-hours-difference-between-two-date-objects/19225463 var now=新日期; 返回Math.floorMath.absnow-thn/36e5; } var hours=gethourspassgetdate$。已创建; console.loghours+自创建getDate$以来已过; 如果时间>5小时{ $.germ.remove; } }; 2020年4月3日13:13:00文件标题 PDF 2020年3月 参考资料


你不明白这里的问题。 正如R Greenstreet所说,它需要在服务器端完成。您需要将创建发布日期发送到UI

假设您有一个来自服务器的JSON,您可以在其中添加post表单bata base的createDate属性

{createDate:日期、名称……}

您需要将该日期与日期进行比较。现在

此处的Pseodu代码:

if(createDate + 6 hours >= Date.now()) then hide your Icon.

使用setTimeout。你能给我举个例子吗?这实际上并没有确认OP提到的标记值。@zero298,没有确认。编辑了我的答案