2016 年更新
自发布此问题以来已经有 4 年多了,事情取得了很大进展。
你不能使用:
var els = document.getElementsByTagName("a[href='http://domain.com']");
但你可以使用的是:
var els = document.querySelectorAll("a[href='http://domain.com']");
(注:浏览器支持见下文)
这将使您问题中的代码完全按照您的预期工作:
for (var i = 0, l = els.length; i < l; i++) {
var el = els[i];
el.innerHTML = el.innerHTML.replace(/link1/gi, 'dead link');
}
a[href^='http://domain.com']
如果您想要所有以开头的链接,您甚至可以使用选择器'http://domain.com'
:
var els = document.querySelectorAll("a[href^='http://domain.com']");
for (var i = 0, l = els.length; i < l; i++) {
var el = els[i];
el.innerHTML = el.innerHTML.replace(/link/gi, 'dead link');
}
见:演示
浏览器支持
根据Can I use截至 2016 年 6 月的浏览器支持看起来相当不错:
(有关最新信息,请参阅: http ://caniuse.com/queryselector)
IE6和IE7没有支持,但
IE6 已经死了
,IE7 很快就会拥有0.68% 的市场份额。
IE8已经超过 7 年了,它部分支持 querySelectorAll - “部分”我的意思是你可以使用CSS 2.1 选择器,如[attr]
, [attr="val"]
,和CSS 3 选择器的一小部分,幸运的是包括:
, ,所以看起来 IE8 是我上面的例子很好。[attr~="val"]
[attr|="bar"]
[attr^=val]
[attr$=val]
[attr*=val]
IE9、IE10和IE11都毫无问题地支持querySelectorAll,Chrome、Firefox、Safari、Opera和所有其他主流浏览器(桌面和移动)也是如此。
换句话说,我们似乎可以安全地开始querySelectorAll
在生产中使用了。
更多信息
有关详细信息,请参阅:
另请参阅此答案,了解它们从 DOM 规范querySelectorAll
中删除时、、和之间的区别。querySelector
queryAll
query