当涉及嵌套<ul>
时,我在重写页面中的所有锚点时遇到问题。
我们在使用<a>
(主播)的Chrome中遇到问题,因此我使用点击处理程序将锚点重写为<span>
s。
一切正常,除了:嵌套<ul>
开始的地方,它前面的<li>
(未闭合的<li>
)最终在嵌套列表的末尾而不是在开头。< / p>
有什么想法吗? (这需要在数百页上工作,因此一次性不是真正的解决方案)
function see() {
var lists=document.getElementsByTagName('LI'); //all li
for (var i=0; i<lists.length; i++) {
var hrf0=lists[i].innerHTML;
if (lists[i].childNodes.length>0 && hrf0.indexOf('#')!=-1) {
var testnode0=lists[i].innerHTML;
var testnode=lists[i].children[0].innerHTML;
var testnode2=testnode.trim();
var firstchar = testnode0.charAt(0);
if (firstchar=='<' && testnode0.search('http://')<0 ) {
var linktext=lists[i].children[0].innerHTML;
var hrf3=lists[i].children[0].href;
var hrf2=hrf3.split('#')[1]; //target
lists[i].removeChild(lists[i].children[0]); //remove a
var para = document.createElement('span');
lists[i].appendChild(para);
var newlinktext = document.createTextNode(linktext);
lists[i].children[0].appendChild(newlinktext);
lists[i].children[0].setAttribute("id", "a" + i);
lists[i].children[0].setAttribute("data-link", hrf2);
lists[i].children[0].setAttribute("class", 'newanchor');
lists[i].children[0].style.cursor="pointer";
document.getElementById('a' + i).addEventListener('click', gothere, false);
}
}
}
}
这是链接代码(但它有效):
function gothere() {
var link=this.getAttribute('data-link');
var element = document.getElementById(link);
element.scrollIntoView();
}