2012-06-28 109 views
0

编辑我的代码,使其工作请。让点击儿童的div可见

已编辑为最新版本。

以下是我有:

<body> 
<!-- visibility toggle --> 
<script type="text/javascript"> 
<!-- 
function toggle_visibility() 
    { 
     if(document.getElementById(window.event.srcElement.id+'menu').style.display=='block'){ 
      document.getElementById(window.event.srcElement.id+'menu').style.display='none'; 
     } 
     else{ 
      document.getElementById(window.event.srcElement.id+'menu').style.display='block'; 
     } 
    }; 
//--> 
</script> 

这里是我的div(编辑恰好说明我有)

<ul class="lyrics"><h3>ALL LYRICS</h3> 
    <?php while (have_posts()) : the_post(); ?> 
     <li ><a id="links" href="#" onclick="toggle_visibility();"><?php the_title(); ?></a> 
      <div id="linksmenu"><?php the_content();?></div> 
     </li> 
    <?php endwhile; // End the loop. Whew. ?> 
</ul> 

这里是发生了什么: 无论哪一个环节我点击,只显示与最后一个“the_content”关联的文本。

这是我需要的: 最初所有的“孩子”divs不可见。 当我点击“标题1”链接时,“子文本1”将变得可见。 当我点击“标题2”链接时,“儿童文字2”将变得可见,并且“儿童文字1”将不可见。

这将会出现在WordPress博客中,因此Title div的数量将会发生变化。总会只有一个孩子。

在此先感谢!

+1

你在哪里调用'toggle_visibility'功能?即您的事件处理程序在哪里? – jackwanders

+0

我们需要查看PHP函数的输出来确定问题。 –

+1

你想让我们为你编写和调试代码吗?还是你有特定的问题? – akonsu

回答

0

为什么您的第一个div被切换,无论您点击哪个位置,都是因为您使用了硬编码的编号foo。通过thistoggle_visibility而不是文字'foo'和里面toggle_visibility函数找到您要切换的div(这将成为传递参数的第一个孩子)。

0

这是因为你打电话给the_content()两次。我假设你的文件看起来像:

<?php get_header(); 
if (have_posts()) : while (have_posts()) : the_post(); ?> 
<ul> 
<li class="main"><a href="#" title="Title 1"><?php the_title(); ?></a> <div class="child"><?php the_content(); ?></div> </li> 
<li class="main"><a href="#" title="Title 2"><?php the_title(); ?></a> <div class="child"><?php the_content(); ?></div> </li> <ul> 
<?php endwhile; else: ?> 
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p> 
<?php endif; ?> 

你需要有两个循环,但没有看到更多的代码,我不能提供细节。阅读关于multiple loops

+0

谢谢你的回复。我在原帖中添加了附加信息。 – user1488639

0

将参数丢弃并使用触发事件的元素的ID来构建要设置为可见/不可见的标识。

function toggle_visibility() 
     { 
      if(document.getElementById(window.event.srcElement.id+'menu').style.display=='block'){ 
       document.getElementById(window.event.srcElement.id+'menu').style.display='none'; 
      } 
      else{ 
       document.getElementById(window.event.srcElement.id+'menu').style.display='block'; 
      } 
     }; 

而且只要你想始终显示事物都有一个ID +“菜单”或什么的,你可以用函数表现出来。 (请注意,父有ID links和孩子有ID linksmenu

<ul class="lyrics"><h3>ALL LYRICS</h3> 
    <?php while (have_posts()) : the_post(); ?> 
    <li ><a id="links" href="#" onclick="toggle_visibility();"><?php the_title(); ?></a> 
     <div id="linksmenu"><?php the_content();?></div> 
    </li> 
    <?php endwhile; // End the loop. Whew. ?> 
</ul> 
+0

上述代码仅显示最后一个“linksmenu”文本,无论点击哪个链接。例如:我有链接1,链接2,如果我单击链接1,则获得链接1文本,如果单击链接2,则获取链接1文本。 – user1488639

+0

,你有link1menu,link2menu等? – CosminO