Показать сообщение отдельно
Старый 25.07.2008, 13:01     # 1
qwebec
Full Member
 
Аватар для qwebec
 
Регистрация: 16.10.2002
Сообщения: 519

qwebec Путь к славе только начался
Javascript требуется небольшая коррекция

заранее прошу прощение за портянку кода.

в следующем шаблоне генерится раскрывающееся меню.
все пункты меню свернуты, за исключением текущего пункта

при попытке свернуть текущий раздел, при первом клике ничего не происходит, сворачивается меню только после второго клика.

подскажите, пожалуйста, что нужно дописать, чтобы открытый раздел меню сворачивался при первом клике?


Код:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<div id="categoryTree" class="globalModule">
  <h3>{$lang.dwb_category}</h3>
  <!-- {foreach from=$categories item=cat} -->
  <div class="toggleblock">
    <h4 class="toggletitle"><!-- {if $cat.children} --><span>{if $cat.menuexp==1}<img src="../images/icon_list_down.gif" alt="-" />{else}<img src="../images/icon_list_up.gif" alt="+"  />{/if}</span><!-- {/if} --><a href="{$cat.url}">{$cat.name|escape:html}</a></h4>
    <!-- {if $cat.children} -->
    <ul {if $cat.menuexp==1}{else}style="display:none;"{/if} >
      <!-- {foreach from=$cat.children item=child} -->
      <li><a href="{$child.url}">{$child.name|escape:html}</a></li>
      <!-- {/foreach} -->
    </ul>
    <!-- {/if} -->
  </div>
  <!-- {/foreach} -->
</div>
<script type="text/javascript">
//<![CDATA[
  function getElementsByClassName(id,cls){
    var o=document.getElementById(id);
    var aelem=[],
    oaelem=o.getElementsByTagName("*");
    for(var i=0;i<oaelem.length;i++){
      if (oaelem[i].className==cls ){
        aelem[aelem.length]=oaelem[i];
      }
    }
    return aelem;
  }
  function slideshow(obj){
    obj.parentNode.parentNode.getElementsByTagName("ul")[0].style.display = "";
    obj.innerHTML = "<img src='../images/icon_list_down.gif' alt='-' />";
    obj.onclick = new Function("slidehidden(this)");
  }
  function slidehidden(obj){
    obj.parentNode.parentNode.getElementsByTagName("ul")[0].style.display = "none";
    obj.innerHTML = "<img src='../images/icon_list_up.gif' alt='+' />";
    obj.onclick = new Function("slideshow(this)");
  }
  var a=getElementsByClassName("categoryTree","toggleblock");
  for(var n=0;n<a.length;n++){
    var olink=a[n].getElementsByTagName("h4")[0].firstChild;
  olink.onclick = new Function("slideshow(this)");
  }
//]]>
</script>
qwebec вне форума