這取決於你的意思。我無法全面瞭解您的問題。從外觀上看,你抓取了一個id爲「toc」的元素,所以我猜這個toc包含LI
元素以及A
元素。在這種情況下,您可以在getElementsByTagName
中使用星號,這可能會更慢,具體取決於其中有多少其他元素。
function setActive() {
var href = window.location + ''
, el = document.getElementById('toc')
, a = el.getElementsByTagName('*')
, i = 0
, l = a.length
, name;
for (; i < l; i++) {
el = a[i];
name = el.nodeName.toLowerCase();
if (name === 'li' || (name === 'a'
&& ~href.indexOf(el.href))) {
el.className = 'active';
}
}
}
如果你問祖李上漲文檔樹,這是你想要什麼 :
function setActive() {
var href = window.location + ''
, el = document.getElementById('toc')
, a = el.getElementsByTagName('a')
, i = 0
, l = a.length;
// descendants
for (; i < l; i++) {
if (~href.indexOf(a[i].href)) {
a[i].className = 'active';
}
}
// parents
while (el = el.parentNode) {
if (el.nodeName.toLowerCase() === 'li') {
el.className = 'active';
}
}
}