表示萌新对JS实在是不太了解,感觉语法好艰难.
资料也无人查起.所以只好来求大神指点
是这样的,我现在拥有一个点击指定元素,然后展示列表的菜单效果
这个是已经OK了
但是问题是,多个展示菜单被点击时,因为展开的子菜单内容太长,而且展开的位置超出的网页的可视区
所以我需要在加一个功能.即点击展开事件发生后,再将网页的可视区转跳到了当前元素.
其实就是 锚点转跳的效果.但是由于代码上已经占用了 href 属性.所以无法使用锚点来制作
这便难到了我了.
我在下面附上代码.求大神指点一下,应该在哪里改写.才能达到,A元素被点击,B元素被展示显示,然后将视野跳至A元素.这个效果.
还请高手不吝赐教.
代码如下 :
<!-- 下面为点击触发事件的元素 这里称为元素 [A]-->
<div id="17" cla="cla" parentid="0" parentpath="0" depth="0" style="display: block;" onclick="hs(17,"0")" class="fcss"><a href="javascript:void(0);">超氧离子六秒机</a></div>
<!-- 下面为点击触发事件后显示的元素 这里称为元素[B]-->
<div cla="cla" parentid="17" parentpath="0,17" depth="1" style="display: none;" class="scss">
<img src="/uploads/allimg/150801/1AH12430-0-lp.jpg" alt="超氧离子六秒机4">
<a href="/product/cylzlmj/262.html">超氧离子六秒机4</a>
</div>
以下是代码(因为我对JS了解甚少,所以不确定这是不是完全的代码.因为引用JS文件实在是看不太懂.):
<script language='javascript'>
function hs(tId,parentpath)
{
var i;a=document.getElementsByTagName('div');
for (i=0;i<a.length;i++){
if(a[i].getAttribute('cla')=='cla'){
if(a[i].getAttribute('depth')=='0' || parentpath.indexOf(a[i].getAttribute('parentpath')+',')>=0 || a[i].getAttribute('parentpath')==parentpath || a[i].getAttribute('parentId')==tId)
if(a[i].getAttribute('parentId')==tId)
if(a[i].style.display=='block')
a[i].style.display='none';
else
a[i].style.display='block';
else
a[i].style.display='block';
else
a[i].style.display='none';
}
}
}</script>
阅读全文
收起全文