由于我对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");
根据逻辑,只有第一个实例。
为什么不允许我使用第一种方法禁用所有链接?
答案 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 functions
和Array.from()
,(虽然上面的链接中提供了Array.from的polyfill。)