删除属性

时间:2016-02-11 21:45:29

标签: javascript

由于我对JavaScript的了解不多,我试图在将鼠标悬停在图片上时删除名称和标题文字上的href链接:http://www.equiuspartners.com/site/our-team/

我认为会起作用:

document.querySelectorAll("h3.the-title a, div.portfolio-categories a").removeAttribute("href");

在给定数组值时似乎只有实际工作:

document.querySelectorAll("h3.the-title a, div.portfolio-categories a")[0].removeAttribute("href");

根据逻辑,只有第一个实例。

为什么不允许我使用第一种方法禁用所有链接?

2 个答案:

答案 0 :(得分:3)

querySelectorAll会返回一个nodeList,一个类似于数组的对象,其中包含 all 可能与给定选择器匹配的元素,而不是单个元素。

您必须迭代以删除所有这些元素的属性

var elems = document.querySelectorAll("h3.the-title a, div.portfolio-categories a");

for (var i=0; i<elems.length; i++) {
    elems[i].removeAttribute("href");
}

答案 1 :(得分:1)

就是这样,document.querySelectorAll()返回一个集合,而不是单个元素。在现代浏览器中,您可以使用它来删除所有匹配元素的所有属性:

Array.from(document.querySelectorAll(<selector>))
.forEach(e => e.removeAttribute('href'));

请注意,您只能在最新的chrome和firefox中使用arrow functionsArray.from(),(虽然上面的链接中提供了Array.from的polyfill。)