可以使用querySelectorAll方法,它比getElementsByClassName支持更广泛,可以更准确地定位:
var els = document.querySelectorAll('.menu-item-text');
for (var i=0, iLen=els.length; i<iLen; i++) {
if ( (els[i].textContent || els[i].innerText) == 'Inbox') {
alert('Found inbox');
}
}
如果你知道你正在寻找一个跨度,那么选择器可以是span.menu-item-text
. 请注意,qSA 仅在标准模式下的 IE 8 和 9 中受支持,因此请确保您有 DOCTYPE。
这是一个更强大的解决方案,应该可以在任何浏览器回到 IE 6 或更早版本:
function getEl(className, text) {
var els, t, re;
var result = [];
// Get elements matching the class
// Try qSA
if (document.querySelectorAll) {
els = document.querySelectorAll('.' + className);
// Try gEBCN
} else if (document.getElementsByClassName) {
els = document.getElementsByClassName(className);
// Try gEBTN
} else if (document.getElementsByTagName) {
t = document.getElementsByTagName('*');
re = new RegExp('(^|\\s)' + className + '(\\s|$)');
els = [];
for (var i=0, iLen=t.length; i<iLen; i++) {
if (re.test(t[i].className)) {
els.push(t[i]);
}
}
// Stop here if everything failed.
} else {
return;
}
// Go looking for element with matching text
for (var j=0, jLen=els.length; j<jLen; j++) {
if ( (els[j].textContent || els[j].innerText) == 'Inbox') {
result.push(els[j]);
}
}
return result;
}