Javascript Can';无法使循环正确循环

Javascript Can';无法使循环正确循环,javascript,Javascript,好的,我正在创建一个天气应用程序,它包含一个邮政编码,给出当天的当前温度高低,以及接下来六天的未来预测。我还添加了Date()函数的功能,可以列出正确的日期。但是我有一个问题,当它循环回星期天时,它在数组中的索引为0。我对变量何时通过数字6并将其重置为0进行了条件测试,这样我就不会遇到任何未定义的错误。唯一的问题是我仍然遇到这些问题。我将在下面留下js代码,它应该足够直截了当地指出不需要html的地方。事先也很抱歉,我总是把这里的缩进搞砸了,哈哈。谢谢你的帮助 下面是JS代码 const wea

好的,我正在创建一个天气应用程序,它包含一个邮政编码,给出当天的当前温度高低,以及接下来六天的未来预测。我还添加了Date()函数的功能,可以列出正确的日期。但是我有一个问题,当它循环回星期天时,它在数组中的索引为0。我对变量何时通过数字6并将其重置为0进行了条件测试,这样我就不会遇到任何未定义的错误。唯一的问题是我仍然遇到这些问题。我将在下面留下js代码,它应该足够直截了当地指出不需要html的地方。事先也很抱歉,我总是把这里的缩进搞砸了,哈哈。谢谢你的帮助

下面是JS代码

const weatherButton = document.getElementsByTagName("BUTTON")[0];
const currentTemp = document.getElementsByClassName("weather__main--temp")[0];
const currentDayElement = document.getElementsByClassName("weather__lower--day")[0];
const futureDays = document.getElementsByClassName("weather__item--day");


//Adding functionality for setting days of week on button click
  weatherButton.addEventListener("click", () => {
    const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    let now = new Date();
    let currentDayIndex = now.getDay();
    currentDayElement.innerHTML = days[currentDayIndex];
    //Adding days for futurecast
    for( let i = 0; i < 6; i++ ) {
      if( currentDayIndex > 6 ) { currentDayIndex = 0 };
        futureDays[i].innerHTML = days[currentDayIndex + 1];
        currentDayIndex++;
    };
});
const weatherButton=document.getElementsByTagName(“按钮”)[0];
const currentTemp=document.getElementsByClassName(“weather\uu main--temp”)[0];
const currentDayElement=document.getElementsByClassName(“天气——白天”)[0];
const futureDays=document.getElementsByClassName(“天气项目--day”);
//添加用于在单击按钮时设置每周天数的功能
weatherButton.addEventListener(“单击”,()=>{
施工天数=[“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”];
让我们现在=新日期();
让currentDayIndex=now.getDay();
currentDayElement.innerHTML=天[currentDayIndex];
//为futurecast添加天数
for(设i=0;i<6;i++){
如果(currentDayIndex>6){currentDayIndex=0};
futureDays[i].innerHTML=days[currentDayIndex+1];
currentDayIndex++;
};
});

我想这就是你想要的:

const weatherButton=document.getElementsByTagName(“按钮”)[0];
const currentTemp=document.getElementsByClassName(“weather\uu main--temp”)[0];
const currentDayElement=document.getElementsByClassName(“天气——白天”)[0];
const futureDays=document.getElementsByClassName(“天气项目--day”);
weatherButton.addEventListener(“单击”,()=>{
施工天数=[“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”];
让我们现在=新日期();
让currentDayIndex=now.getDay();
currentDayElement.innerHTML=天[currentDayIndex];
//为futurecast添加天数
for(设i=0;i<6;i++){
如果(currentDayIndex>=6){
currentDayIndex=0;
未来天数[0]。innerHTML+=''+天数[currentDayIndex]+'';
}否则{
futureDays[0]。innerHTML+=''+days[currentDayIndex+1]+'';
currentDayIndex++;
}
};
});
weather\uuuu main--温度
天气较低——白天
天气预报项目——白天
按钮
点击我您的问题是:

days[currentDayIndex + 1]
当currentDayIndex为0并添加1时,从1开始

这是您要使用的for循环

for(let i = 0, j = currentDayIndex + 1; i < 6; i++, j++){       
    if(j > 6){
      j = 0
    }
    futureDays[i].innerHTML = days[j];
}
for(设i=0,j=currentDayIndex+1;i<6;i++,j++){
如果(j>6){
j=0
}
futureDays[i].innerHTML=days[j];
}

因为您使用的是“天[currentDayIndex+1]”。那会让它过去的。因此,您希望将if条件更改为“currentDayIndex>=6”。另一种方法是使用模数:“天[(currentDayIndex+1+i)%7]”。这样,您甚至可以放弃if语句和currentDayIndex的增量。这不是代码中唯一的问题,您首先定义了futureDays常量,然后使用futureDays[i],这也会产生错误“Uncaught TypeError:无法在HtmlButtoneElement.weatherButton.addEventListener处设置undefined的属性'innerHTML'谢谢你。我不知道你可以像那样在for循环中声明两个变量。我试图使用if-else来测试索引何时为7,并将其设置回0,然后使用单独的if-conditional,以便在索引为0时将其设置为sunday。但它不起作用。你的工作做得很好!没问题!现在你知道了!祝你好运,开始你的JS职业生涯。如果你有任何其他问题,请告诉我。如果你是一个新开发者考虑看我的YouTube频道