<div style="float: left" id="my_menu" class="sdmenu">
<div ><span><a  href="#" >>>abc </a></span>
 <a href="6">-a </a>
 <a href="7">-b </a>
 <a href="8">-c </a>
</div>
<div class="collapsed"><span><a  href="2" >>>def</a></span>
</div>
 
    </div>
如上代码  
用js判断div内是否有子类的代码
如果有子类,就把span里面的href="#"替换为空
如果没有子类 span里面的href="#"则不变

解决方案 »

  1.   

    你主要的需求是做什么?要判断子类?还是要改变href
    如果只是要改掉span的href,完全可以用getElementsByTagName方法来获得所有的span标签,再循环一一判断并修改。
      

  2.   

    判断是否有子类
    abc是大类  a、b、c是小类
    那么这个abc的的链接href="#"就替换成空的
    第二个def 是没有小类的
    那么这个def的 链接href=“#”就保持原样
      

  3.   

    那个代码是点击显示、隐藏子分类的代码
    但是如果有子分类的话 点击abc大类 直接跳到大类的链接去了
    不能展开了
      

  4.   

    那就获得到span,通过nextSibling属性来判断与它相临的下一个dom节点是什么。。
    此方法在firefox上可能会出现TextNode的节点,你只需要判断它的nodeType是不是1就行了。
    function getNextSibling(node){  
        var nextSibling = node.nextSibling;  
        while(nextSibling && nextSibling.nodeType !== 1){  
            nextSibling = nextSibling.nextSibling;  
        }  
        return nextSibling;  
    }  
      

  5.   

    JQUERY写法
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>function test(){
        $("#my_menu > div").each(function(){//查找ID为my_menu的DIV下的所有子DIV
            var count = $(this).children("a").length;
            if(count > 0){//判断DIV是否包含A元素
                $(this).children("a").attr("href","");
            }
        });
    }
      

  6.   

    var change = function(){
    var getNextSibling  = function(node){   
      var nextSibling = node.nextSibling;   
      while(nextSibling && nextSibling.nodeType !== 1){   
      nextSibling = nextSibling.nextSibling;   
      }   
      return nextSibling;   

    var spans = document.getElementById('my_menu').getElementsByTagName('span');
    for(var i = 0,span;span = spans[i];i++){
    if(!getNextSibling(span)){
    span.firstChild.href = "#";
    }
    }
    };
    change();