无法使循环正确循环

时间:2019-02-02 05:36:58

标签: javascript

好吧,所以我要创建一个天气应用,该应用需要一个邮政编码,并给出当天的当前温度高低,以及未来六天的未来温度。我还添加了具有列出正确日期的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++;
    };
});

2 个答案:

答案 0 :(得分:1)

我想这就是你想要的:

"defines": [
  "__WIN32__"  # Needed to include the right subheader
],
"msvs_configuration_platform": "win32",
"msvs_settings": {
  "VCCLCompilerTool": {
    "AdditionalOptions": [
      "/EHsc",
      "/std:c++17"
    ]
  }
}
  C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX64\x86\CL.exe /c /I"C:\Users\danni\.node-gyp\10.15.1\include\node" /I"C:\Use
  rs\danni\.node-gyp\10.15.1\src" /I"C:\Users\danni\.node-gyp\10.15.1\deps\openssl\config" /I"C:\Users\danni\.node-gyp\10.15.1\deps\openssl\openssl\include" /I"C:\Users\danni\.
  node-gyp\10.15.1\deps\uv\include" /I"C:\Users\danni\.node-gyp\10.15.1\deps\zlib" /I"C:\Users\danni\.node-gyp\10.15.1\deps\v8\include" /I..\src /I..\extern\bossa\src /I..\node
  _modules\nan /I..\src\compat /Z7 /nologo /W3 /WX- /diagnostics:classic /MP /Ox /Ob2 /Oi /Ot /Oy /GL /D NODE_GYP_MODULE_NAME=bossa /D USING_UV_SHARED=1 /D USING_V8_SHARED=1 /D
   V8_DEPRECATION_WARNINGS=1 /D WIN32 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _HAS_EXCEPTIONS=0 /D VERSION=bossajs /D __WIN32__ /D BUILDING_NODE_EXTENSION /
  D _WINDLL /GF /Gm- /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR- /Fo"Release\obj\bossa\\" /Fd"Release\obj\bossa\vc141.pdb" /Gd /TP /wd4351 /wd4355 /wd4800
  /wd4251 /wd4275 /wd4244 /wd4267 /analyze- /FC /errorReport:queue /EHsc /std:c++17 ..\src\index.cc ..\src\bossajs.cc ..\src\observer.cc ..\src\connectworker.cc MORE_FILES "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.cc"
  index.cc

答案 1 :(得分:1)

您的问题是:

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];
}