日期:2014-05-16  浏览次数:20454 次

原生JS判断<a>后面的标签<ul>
<div id="nav">
<ul>
<li><a href="#">1</a></li>
<li><a href="#">2</a>
<ul>
<li><a href="#">11</a></li>
<li><a href="#">22</a></li>
<li><a href="#">33</a>
<ul>
<li><a href="#">111</a></li>
<li><a href="#">222</a></li>
<li><a href="#">333</a></li>
</ul></li>
</ul></li>
<li><a href="#">3</a></li>
</ul>

</div>



这样的菜单结构, 如何用JS判断下  如<a>标签后有ul  就在这个<a>里面添加<i></i>

变成这样

<div id="nav">
<ul>
<li><a href="#">1</a></li>
<li><a href="#">2 <i></i></a>
<ul>
<li><a href="#">11</a></li>
<li><a href="#">22</a></li>
<li><a href="#">33 <i></i></a>
<ul>
<li><a href="#">111</a></li>
<li><a href="#">222</a></li>
<li><a href="#">333</a></li>
</ul></li>
</ul></li>
<li><a href="#">3</a></li>
</ul>

</div>
------解决方案--------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function()
{
var oDiv=document.getElementById('nav');
var aLink=oDiv.getElementsByTagName('a');
for(var i=0;i<aLink.length;i++)
{
var nextSibling=checkNext(aLink[i],'ul');
if(nextSibling)
{
var oI=document.createElement('i');
oI.innerHTML='123';//内容123
aLink[i].parentNode.insertBefore(oI,nextSibling);
}
}
}
function checkNext(obj,tag)
{
var nextSibling=getNext(obj);
if(nextSibling&&nextSibling.nodeName.toLowerCase()==tag)
return nextSibling;
return null;
}
function getNext(obj)
{
if(!obj
------解决方案--------------------
!obj.nextSibling) return null;
return obj.nextSibling.nodeType==1?obj.nextSibling:getNext(obj.nextSibling);
}
</script>
</head>

<body>
<div id="nav">
  <ul>
    <li><a href="#">1</a></li>
    <li><a href="#">2</a>
      <ul>
        <li><a href="#">11</a></li>
        <li><a href="#">22</a></li>
        <li><a href="#">33</a>
          <ul>
            <li><a href="#">111</a&g