You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript仅显示最后结果问题:查询1月1日为周日的年份

解决你的JavaScript年份查询问题

嘿,我瞅出你代码里的问题啦!每次找到1月1日是周日的年份时,你都用innerHTML = ...直接替换了元素里的内容,所以最后只会留下最后一个匹配的年份,之前的结果全被覆盖掉咯。

问题根源

你的循环逻辑里,每找到一个符合条件的年份,就会把demo元素的HTML内容完全替换成当前年份的信息,而不是在原有内容后面追加新结果。比如第一次找到2017年时,会把内容设为对应文本;下次找到2023年时,又把之前的内容换成2023的,以此类推,最后自然只剩最后一个年份。

修正方案

给你两种简单的解决办法,选哪个都行:

方法1:追加内容而非替换

把赋值操作从=改成+=,这样每次都会在原有内容后面添加新行,同时记得先清空原有内容,避免多次点击按钮时结果重复叠加:

function sun() {
  // 先清空之前的结果
  document.getElementById('demo').innerHTML = '';
  // 把year初始值改成数字(你之前写的字符串"2014"虽能自动转换,但数字更规范)
  for (let year = 2014; year <= 2050; year++) {
    const date = new Date(year, 0, 1);
    if (date.getDay() === 0) {
      document.getElementById('demo').innerHTML += "First Jan being sunday on year =" + year + "<br>";
    }
  }
}

方法2:先收集结果再一次性渲染(性能更优)

如果循环次数较多,频繁修改DOM会影响性能,推荐先把所有符合条件的年份存进数组,最后一次性生成HTML内容:

function sun() {
  const sundayYears = [];
  for (let year = 2014; year <= 2050; year++) {
    const date = new Date(year, 0, 1);
    if (date.getDay() === 0) {
      sundayYears.push(year);
    }
  }
  // 把数组转成目标HTML格式
  const resultHtml = sundayYears.map(year => `First Jan being sunday on year = ${year}<br>`).join('');
  document.getElementById('demo').innerHTML = resultHtml;
}

这种方法只修改一次DOM,效率更高,代码也更整洁。

试试上面的代码,点击按钮后就能看到所有2014到2050年间1月1日是周日的年份啦~

内容的提问来源于stack exchange,提问作者krishk varma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:08:23