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

JS循环创建4个h1时为何仅第一个h1的绿色颜色样式生效?

问题根因

document.querySelector("h1") 的匹配规则是返回DOM中第一个匹配选择器的元素。你在每次循环里调用这个方法时,拿到的永远是第一次循环插入到页面的第一个h1节点,后续新创建的3个h1从来没有被选中过,自然不会应用绿色样式。

修复方法

方案1:直接操作当前创建的节点(推荐,性能最优)

你在循环里已经把新创建的h1存在tag变量里了,不需要再额外调用查询方法去DOM里找元素,直接给tag设置样式即可:

for (let i = 1; i <= 4; i++) {
  const tag = document.createElement("h1");
  const text = document.createTextNode(i + " Tutorix is the best e-learning platform");
  tag.appendChild(text);
  // 直接给当前创建的h1设置样式
  tag.style.color = "green";
  const container = document.getElementById("new");
  container.appendChild(tag);
}

对应的HTML结构不需要改动:

<div id="new">

</div>

方案2:批量查询所有h1后统一设置

如果需要等所有元素都插入DOM后再统一样式,可以用document.querySelectorAll("h1")获取页面中所有h1的节点集合,遍历集合逐个设置样式:

// 先完成所有h1的创建和插入
for (let i = 1; i <= 4; i++) {
  const tag = document.createElement("h1");
  const text = document.createTextNode(i + " Tutorix is the best e-learning platform");
  tag.appendChild(text);
  const container = document.getElementById("new");
  container.appendChild(tag);
}
// 批量选中所有h1设置样式
document.querySelectorAll("h1").forEach(h1 => {
  h1.style.color = "green";
})

更优的样式管理实践是提前定义CSS类,给元素加类名而非写内联样式,后续维护修改更方便:

.title-green {
  color: green;
}

创建元素时直接加类即可:tag.classList.add('title-green')

内容的提问来源于stack exchange,提问作者Arvind SHa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:42:17