鼠标驱动的下拉菜单问题

2016-07-07 16:37 来源:www.chinab4c.com 作者:ecshop专家

  1. <a href="../catalog.php" onMouseOver="showCatalog(this)" onMouseOut="hideCatalog()" id="catalog-list">{$lang.catalog}</a>

  2. <div id="ECS_CATALOG" class="catalog-div" style="display:none"
  3. onmouseover="if (this.style.display != 'block') this.style.display='block';"
  4. onmouseout="if (this.style.display != 'none') this.style.display = 'none';">
  5. <ul>
  6. <!--{assign var="level" value=0}-->
  7. <!-- {foreach from=$catalog_list item=cat} -->
  8. <!-- {if $level > $cat.level} -->
  9. </ul>
  10. <!-- {/if}-->
  11. <!-- {if $level < $cat.level} -->
  12. <ul>
  13. <!-- {/if} -->
  14. <li class="{if $cat.level eq 0}top-cate{else}snd-cate{/if}"><a href="{$cat.url}" title="{if $cat.cat_desc neq ''}{$cat.cat_desc}{/if}">{$cat.cat_name}</a></li>
  15. <!--{assign var="level" value=$cat.level}-->
  16. <!-- {/foreach} -->
  17. </ul>
  18. </div>
复制代码
这是官方的显示代码
在js里面有相应的脚本

可是我在多层嵌套的<div>里面却提示脚本找不到对象,后来修改了

脚本下的
var pos = getCoordinate(obj);
这句代码 getCoordinate() 函数,应该是获取html元素相对于body之间的距离我觉得这个函数有兼容性问题!

谁可以重新写一个兼容性强的代码???

谢谢!!!


回答:
改成下面这样
  1. function getCoordinate(obj){
  2. var pos =
  3. {
  4. "x" : 0, "y" : 0
  5. }
  6. pos.x = document.body.offsetLeft;
  7. pos.y = document.body.offsetTop;

  8. do
  9. {
  10. pos.x+=obj.offsetLeft;
  11. pos.y+=obj.offsetTop;

  12. obj=obj.offsetParent;
  13. }
  14. while (obj!=null && obj!=document.body)

  15. return pos;
  16. }
复制代码
发现偏移位置了 111.jpg


楼上好强,支持

看看 怎么个效果???

这个好,支持一下