如何使用javascript解决嵌套的UL

时间:2016-01-11 15:25:02

标签: javascript html css

当涉及嵌套<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();
}

0 个答案:

没有答案