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

JavaScript求助:年份分区文章计数器函数无法正常统计数量

JavaScript求助:年份分区文章计数器函数无法正常统计数量

嗨,刚接触JS就自己折腾计数器功能超棒的!别着急,我一眼就看到问题出在哪了——你的选择器拼写出错啦😎

问题根源分析

你写的选择器拼接代码是:

let articles = "#y" + year + "article";

当传入2025时,这个字符串会变成#y2025article,但你实际要找的是id="y2025"的section下面的所有<article>元素。正确的CSS选择器应该是#y2025 article(注意ID和标签名之间的空格,代表「选中该ID元素下的所有article子元素」)。你现在的写法相当于在找一个id="y2025article"的元素,当然找不到任何内容,所以articlesSelected.length一直是0。

修正方案

把选择器那行改成下面两种写法之一都可以:

  • 传统字符串拼接(注意加空格):
let articles = "#y" + year + " article";
  • ES6模板字符串(更简洁易读):
let articles = `#y${year} article`;

额外提醒:别忘了触发统计

另外要注意,页面加载完成后需要主动调用这个统计函数,不然计数器不会自动更新。你可以在JS代码最后加一段页面加载监听:

// 页面加载完成后自动统计2025年的日志数
window.addEventListener('load', () => {
  totalLog('2025');
});

完整可运行的修正代码

<section id="home">
  <p>choose the year you want to view!</p>
  <button onclick="goToYear('2025')">
    <span class="year">2025</span>
    <br>
    <span id="logs2025">total logs: </span>
  </button>
</section>

<section id="y2025">
  <article><p> test article test test test </p></article>
  <article><p> 第二篇测试文章 </p></article> <!-- 多添加一篇方便测试数量 -->
</section>

<script>
function totalLog(year) {
  // 修正后的选择器
  let articles = `#y${year} article`;
  let articlesSelected = document.querySelectorAll(articles);
  let currentSpan = "logs" + year;
  let currentSpanSelected = document.getElementById(currentSpan);
  currentSpanSelected.innerText = "total logs: " + articlesSelected.length;
}

// 页面加载时自动执行统计
window.addEventListener('load', () => {
  totalLog('2025');
});

// 补全你没贴全的跳转函数(如果需要的话)
function goToYear(year) {
  document.getElementById(`y${year}`).scrollIntoView({ behavior: 'smooth' });
}
</script>

这样修改之后,计数器就能准确统计对应年份分区下的文章数量啦!如果还有其他细节问题随时问~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 08:10:28