【发布时间】:2020-01-31 23:14:54
【问题描述】:
场景是:
我在 javascript 中显示了完整的实时日期时间,包括当天的名称。 但是,当调整视口大小时,这种格式会占用太多空间,所以我的解决方案是 如果屏幕尺寸较小,请更改格式(使其更短)。
是这样的:
当用户的屏幕非常宽时,我想为她/他提供完整的日期时间和日期,如下所示:
“23:34:39 - 2019 年 10 月 3 日 - 星期四”
当用户使用平板格式时应该是:
“23:34:39 - 2019 年 10 月 3 日 - 星期四”
当用户使用屏幕非常小的手机或旧手机时,格式应为:
“23:34:39 - 2019-10-03 - Thu” 如果代码检测到更小的屏幕,我将删除秒数。
我在这里找到了几个关于 rezise(function()); 的帖子。 here 和 addEventListener here 也是另一个 here 所以我对我的代码做了一些修改,但我似乎无法让它工作,添加 addEventListener 后根本没有显示。
这是我的 jsclock.js
window.addEventListener("resize", function() {
if (window.matchMedia("(min-width: 1000px)").matches) {
function date_time(id) {
date = new Date;
year = date.getFullYear();
month = date.getMonth();
months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
d = date.getDate();
day = date.getDay();
days = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
h = date.getHours();
if(h<10)
{
h = "0"+h;
}
m = date.getMinutes();
if(m<10)
{
m = "0"+m;
}
s = date.getSeconds();
if(s<10)
{
s = "0"+s;
}
result = ''+h+':'+m+':'+s+' ❖ '+months[month]+' '+d+', ' +year+' ❖ '+days[day]+'';
document.getElementById(id).innerHTML = result;
setTimeout('date_time("'+id+'");','1000');
return true;
}
} else if (window.matchMedia("(min-width: 800px)").matches) {
function date_time(id) {
date = new Date;
year = date.getFullYear();
month = date.getMonth();
months = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
d = date.getDate();
day = date.getDay();
days = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
h = date.getHours();
if(h<10)
{
h = "0"+h;
}
m = date.getMinutes();
if(m<10)
{
m = "0"+m;
}
s = date.getSeconds();
if(s<10)
{
s = "0"+s;
}
result = ''+h+':'+m+':'+s+' ❖ '+months[month]+' '+d+', ' +year+' ❖ '+days[day]+'';
document.getElementById(id).innerHTML = result;
setTimeout('date_time("'+id+'");','1000');
return true;
}
} else (window.matchMedia("(min-width: 200px)").matches) {
function date_time(id) {
date = new Date;
year = date.getFullYear();
month = date.getMonth();
months = new Array('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12');
d = date.getDate();
if(d<10)
{
d = "0"+d;
}
day = date.getDay();
days = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
h = date.getHours();
if(h<10)
{
h = "0"+h;
}
m = date.getMinutes();
if(m<10)
{
m = "0"+m;
}
s = date.getSeconds();
if(s<10)
{
s = "0"+s;
}
result = ''+h+':'+m+':'+s+' ❖ ' +year+'-'+months[month]+'-'+d+' ❖ '+days[day]+'';
document.getElementById(id).innerHTML = result;
setTimeout('date_time("'+id+'");','1000');
return true;
}
}
以及我如何显示它。
span id="date_time"></span>
<script type="text/javascript">window.onload = date_time('date_time');</script>
【问题讨论】:
-
旁注:
23:34:39 - 2019-10-03 - Thu占用的空间与23:34:39 - Oct 3, 2019 - Thu一样多,因此进行这种替换没有多大意义。放弃秒数和日期? -
@Mike'Pomax'Kamermans ,我只想在可用的最小屏幕上放置秒数,但如果用户有一个宽屏幕,我想提供包括秒数和天数在内的所有内容。我会挤压根据用户的视口大小为用户提供尽可能多的详细信息。
-
当然,但这只会让使用不同的字符串变得更加重要。选择你的断点宽度,然后为每个断点找出哪个级别的详细文本有效(并且可能考虑像引导程序这样的东西,它可以为你做很多管理工作,甚至在你用
col-sm、@等类标记元素的地方987654329@、col-l等,它只是自动隐藏/显示)
标签: javascript