参考别人的代码,想做动态菜单(通过显示和隐藏子层实现),里面有这么一段代码,我一放到我的网页中,就总出现错误,请高手指导一下。<script language="javascript">
 //onMouseOver=MM_showHideLayers('subMenuLayer','','show')
 //onMouseOut=MM_showHideLayers('subMenuLayer','','hide')
 function MM_showHideLayers_Other(s_h_ID)//显示传入的ID号的层,关闭其它所有层
 {
            var subMenuLayers = document.getElementsByTagName("DIV");
            if (subMenuLayers) {
             for (i=0; i<subMenuLayers.length; i++) {
                 if (subMenuLayers[i].id && subMenuLayers[i].id.substring(0,12) == "subMenuLayer") {
                  onMouseOut = MM_showHideLayers(subMenuLayers[i].id,'','hide');
                 }
             }
            }
            onMouseOver=MM_showHideLayers(s_h_ID,'','show');
 }
</script>我通过替换代码的方式找错误,应该是document.getElementsByTagName("DIV")这句话出错,这个语句的使用需要什么条件,还是哪里错了错?谢谢~!!

解决方案 »

  1.   

    document.getElementsByTagName
    ->
    document.body.getElementsByTagName
      

  2.   

    晕 是这样么?
    document.body.getElementsByTagName
    ?!
      

  3.   

    不知道你注释的两个函数是怎么回事,猜可能是一个隐藏一个显示吧,但你里面的"onMouseOut = MM_showHideLayers(subMenuLayers[i].id,'','hide');" 应该是不对的的
    把代码里的"onmouseOut="和"onMouseOver="去掉后试试,直接执行函数。<script language="javascript">
     //onMouseOver=MM_showHideLayers('subMenuLayer','','show')
     //onMouseOut=MM_showHideLayers('subMenuLayer','','hide')
     function MM_showHideLayers_Other(s_h_ID)//显示传入的ID号的层,关闭其它所有层
     {
                var subMenuLayers = document.getElementsByTagName("DIV");
                if (subMenuLayers) {
                for (i=0; i<subMenuLayers.length; i++) {
                    if (subMenuLayers[i].id && subMenuLayers[i].id.substring(0,12) == "subMenuLayer") {
                     MM_showHideLayers(subMenuLayers[i].id,'','hide');
                    }
                }
                }
                MM_showHideLayers(s_h_ID,'','show');
     }
    </script>
      

  4.   

    昏document.body.getElementByTagName 能取到 document.getElementByTagName竟然取不到
      

  5.   

    /*
    昏document.body.getElementByTagName 能取到 document.getElementByTagName竟然取不到
    */
    估计是浏览器的兼容性。
      

  6.   

    getElementByTagName 与getElementById 本身即是不同的.
    后者是针对本页文档所有元素的,而前者本身就是针对不同的obj取其中tagName符合要求的子结点.
    不指定obj怎么行呢?呵呵