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

如何移除class为'other class'的div下<a>标签的rel属性并保留指定类属性

解决移除指定div内a标签rel属性的问题

我来帮你搞定这个需求!首先咱们先拆解下你之前代码里的问题,再一步步给出正确的实现方式。

你之前代码的问题分析

  • 第一段代码:document.getElementsByClassName('other class')返回的是一个HTMLCollection(类数组的DOM元素集合),不是单个元素,所以你直接链式调用.document.getElementsByTagName("a")是完全错误的——DOM元素上并没有document这个属性,而且也不能直接跳过遍历集合的步骤。
  • 第二段代码:activeLis变量根本没定义,而且两个for循环重复使用了i作为计数器,会导致循环逻辑混乱;最重要的是,你直接选中了页面上所有的a标签,会把.myclass下的a标签rel也移除,完全不符合你的需求。

正确的实现方式

最简洁且易维护的方式是使用querySelectorAll,它支持直接用CSS选择器精准定位目标元素:

// 精准选中class同时包含other和class的div下的所有a标签
const targetLinks = document.querySelectorAll('.other.class a');
// 遍历每个目标a标签,移除rel属性
targetLinks.forEach(link => {
  link.removeAttribute('rel');
});

如果需要兼容不支持forEach的旧浏览器,可以改用普通for循环:

const targetLinks = document.querySelectorAll('.other.class a');
for (let i = 0; i < targetLinks.length; i++) {
  targetLinks[i].removeAttribute('rel');
}

如果你更倾向于用getElementsByClassName来实现,也可以这样写(需要注意遍历集合的步骤):

// 获取所有class为other和class的div元素集合
const otherDivs = document.getElementsByClassName('other class');
// 遍历每个div
for (let i = 0; i < otherDivs.length; i++) {
  // 获取当前div下的所有a标签
  const linksInDiv = otherDivs[i].getElementsByTagName('a');
  // 遍历移除每个a标签的rel属性
  for (let j = 0; j < linksInDiv.length; j++) {
    linksInDiv[j].removeAttribute('rel');
  }
}

以上几种方式都能精准只移除.other.class下a标签的rel属性,同时保留.myclass下a标签的rel属性,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:27:47