使用 setInterval 和 For Loop 更新 textNode。有些东西不能用

问题描述 投票:0回答:1

我正试图从w3资源中解决这个问题。问题:写一个JavaScript程序来寻找1月1日是2014年和2050年之间的周日。我试着解决它,并附上下面的代码。我可以正确地记录答案,但是当我试图用setInterval更新textNodes.data时,只有2043年,但我想让它通过所有的年份(答案)改变,每100毫秒记录一次。

console.log('January 1 Sunday for the following years:');
let getLeaps=(id)=>{

  let target =document.getElementById(id);

  let textNode =target.childNodes[0];

  let text= textNode.data ;

  let dates=new Date();

  for(x=2014;x<=2050;x++){
        dates.setFullYear(x, 01, 01);
        let day = dates.getDay();
       
      if (day==0){
            let year0 = dates.getFullYear()
            
            text=year0;
            console.log(text);

            textNode.data=text;
            console.log(textNode.data);
            
            
          
        
       }

        
    
  }



}

getLeaps('target');
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p id="target"> </p>
    
</body>
</html>
javascript html dom textnode
1个回答
0
投票

我不会帮你解决......

一些提示。

  1. 检查 setFullYear 文件
  2. 备岁
  3. 以设定的间隔打印它们((1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)。 ClearInterval())

0
投票

正如前面的答案所说,一月不是函数中的 "1 "月。setFullYear 是月份0,所以你需要在你的代码中更改这个值,以获得正确的结果。你也忘了将最后的结果附加到文本数据中,所以你的代码只会覆盖在 textNode.data 与去年发现的符合要求,所以我把它改成了用一个 +=.

同样重要的是,要清楚地认识到价值 textNode.data 因为如果你运行函数 getLeaps() 在循环中,它将把新数据追加到textNode中的前一个数据上,做这样的事情。

2017 2023 2034 2040 2045 2017 2023 2034 2040 2045...

let getLeaps = (id) => {

  let target = document.getElementById(id);

  let textNode = target.childNodes[0];

  let text = textNode.data;

  textNode.data = "";

  let dates = new Date();

  for (x = 2014; x <= 2050; x++) {
    dates.setFullYear(x, 0, 01);
    let day = dates.getDay();

    if (day == 0) {
      let year0 = dates.getFullYear()

      text = year0;
      console.log(text);

      textNode.data += text + ' ';
      console.log(textNode.data);
    }
  }
}

getLeaps('target');
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p id="target"> </p>
    
</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.