tpo*_*pow 202 html javascript date
我需要更新几百个静态HTML页面,这些页面的页脚版权日期是硬编码的.我想用一些每年会自动更新的JavaScript替换它.
目前我正在使用:
<script type="text/javascript">var year = new Date();document.write(year.getFullYear());</script>
Run Code Online (Sandbox Code Playgroud)
这是短暂的吗?
T.J*_*der 496
这是我能得到的最短的:
<script>document.write(new Date().getFullYear())</script>
Run Code Online (Sandbox Code Playgroud)
这将适用于我遇到的所有浏览器.
我是怎么到达那里的:
getFullYear新创建的Date,不需要变量.new Date().getFullYear()可能看起来有点奇怪,但它是可靠的:new Date()首先完成部分,然后是.getFullYear().type,因为JavaScript是默认值; 这甚至被记录为HTML5规范的一部分,在这种情况下可能正在编写已经做过的浏览器.重要的是要注意,这仅适用于启用JavaScript的浏览器.理想情况下,这可以更好地作为离线批处理作业(sed*nix上的脚本等)每年处理一次,但如果您想要JavaScript解决方案,我认为这样做的时间很短.(现在我走了,试探命运.)
Ada*_*cki 29
TJ的答案非常好,但我遇到了一个场景,我的HTML已经呈现,而document.write脚本只会覆盖日期年份的所有页面内容.
对于此方案,您可以使用以下代码将文本节点附加到现有元素:
<div>
©
<span id="copyright">
<script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script>
</span>
Company Name
</div>
Run Code Online (Sandbox Code Playgroud)
Mar*_*ams 14
如果您希望将来包含一个时间范围,将当前年份(例如2017年)作为开始年份,那么明年它将显示如下:"©2017-2018,Company.",然后使用以下代码.它会每年自动更新:
© Copyright 2017<script>new Date().getFullYear()>2017&&document.write("-"+new Date().getFullYear());</script>, Company.
Run Code Online (Sandbox Code Playgroud)
©版权所有2017-2018,公司.
但是如果第一年已经过去了,最短的代码就可以写成:
© Copyright 2010-<script>document.write(new Date().getFullYear())</script>, Company.
Run Code Online (Sandbox Code Playgroud)
小智 12
使用 不是一个好的做法document.write。您可以按此处了解有关 document.write 的更多信息。这是一个比较友好的 JavaScript 解决方案。是的,有一些关于 InnerHTML 不好的研究,正在研究更友好的解决方案。
document.getElementById("year").innerHTML = (new Date().getFullYear());\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x86\x91 JavaScript
\n\xe2\x86\x93 HTML
\n<p>Company © <span id="year"></span> All Rights Reserved.</p>\nRun Code Online (Sandbox Code Playgroud)\n这是一个用于测试它的JSFiddle 。就个人而言,我建议使用 PHP 编写当前年份,而不是使用 JavaScript,因为使用 PHP 而不是 JavaScript 更安全。
\n<?php echo date("Y"); ?>\nRun Code Online (Sandbox Code Playgroud)\n
Tho*_*mel 11
<script type="text/javascript">document.write(new Date().getFullYear());</script>
Run Code Online (Sandbox Code Playgroud)
JS解决方案效果很好,但我会建议服务器端解决方案.我检查的一些网站将整个页面的这个问题变成了空白,只是偶尔会看到一年.
原因是document.write实际上写了整个文档.
我让我的朋友实施了服务器端解决方案,这对他有用.php中的简单代码
<?php echo date('Y'); ?>
Run Code Online (Sandbox Code Playgroud)
请享用!
这是最终最短的最负责任的版本,甚至适用于AD和BC.
[鼓卷......]
<script>document.write(Date().split` `[3])</script>
Run Code Online (Sandbox Code Playgroud)
而已.比接受的答案短6个字节.
如果您需要兼容ES5,您可以满足:
<script>document.write(Date().split(' ')[3])</script>
Run Code Online (Sandbox Code Playgroud)
<div>©<script>document.write(new Date().getFullYear());</script>, Company.
</div>Run Code Online (Sandbox Code Playgroud)
对于 React.js,以下内容在页脚中对我有用......
render() {
const yearNow = new Date().getFullYear();
return (
<div className="copyright">© Company 2015-{yearNow}</div>
);
}
Run Code Online (Sandbox Code Playgroud)