【问题标题】:output images from an array in the order starting with the time of day按从一天中的时间开始的顺序从数组中输出图像
【发布时间】:2021-02-07 14:14:03
【问题描述】:

我有一组图像。当您单击该按钮时,我的图像会以与它们实时变化的顺序(早上、下午、晚上、晚上)相同的顺序滚动,从对应于一天中当前时间的那个开始。例如,如果是白天,那么当您单击它时应该显示晚上。如果是晚上,那么第二天早上一定会出现。我的代码,但它不起作用

const images = ['assets/images/morning/01.jpg', 'assets/images/day/01.jpg', 'assets/images/evening/01.jpg', 'assets/images/night/01.jpg'];
  let i = 0;
function changeImage() { 
  let today = new Date(),
  hour = today.getHours();
  if (hour < 12) {
    // Morning
    i = 0;
  } 
  if (hour < 14) {
    i = 1
    document.body.style.color = 'black';
  } 
  if (hour < 18) {
    // evening
    i = 2
   } 
  if (hour < 0) {
    // Night
    i = 3  
  }
  let index = i;
  const imageSrc = images[index];
  viewBgImage(imageSrc);
  i++;
}
btnImage.addEventListener('click', changeImage)

【问题讨论】:

  • 我还没有运行代码,但在我看来hour &lt; 0 是不正确的,当你想知道它是否是夜晚时。
  • 代码不完整/情况不可重现。即 viewBgImagebtnImage 未在此代码中定义。但也许作为一些一般建议,您可以考虑使用通用变量名称 let i 进行全局状态跟踪不是一个好主意。或者,您可以将状态作为具有&lt;img&gt; 标记的容器的属性来跟踪。在我看来,viewBgImage实际上是改变图像的功能,changeImage是一个刷新过程。

标签: javascript arrays


【解决方案1】:
  1. 如果小时为10,前三个条件为真,因此您最终会多次更改“i”变量,请改用else if
  2. 小时

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多