我可以在PHP echo中显示,隐藏和切换结果吗?

时间:2012-04-10 14:44:14

标签: php html

基本上,点击“评论”链接可以显示查询的最后结果,再次点击它应该被隐藏。我也尝试过Rocket的代码,但是我在浏览器的底部收到一条错误消息,当我点击“评论”时,它就会把我带到页面顶部。我会对此提出一些建议

$i = 1; // ID Counter 
while($row = mysql_fetch_array($result)) 
{    
echo "<h1>$row[title]</h1>";    
echo "<p class ='second'>$row[blog_content]</p> ";     
echo "<p class='meta'>Posted by .... &nbsp;&bull;&nbsp; $row[date] &nbsp;&bull;&nbsp; <a href='#' onclick=\"toggle_visibility('something$i');\">Comments</a><div id='something$i'   style='display: none;'>$row[comment]</div>";    
$i++; // Increment counter 
} 

3 个答案:

答案 0 :(得分:5)

这是一个循环,一遍又一遍地回应相同的事情,从而使所有div具有相同的ID,something2

ID必须是唯一的,您必须为每个div制作唯一的ID。

类似于:<div id='something$i' style='display: none;'>(记住增加$i)。

此外,您将要逃避onclick属性中的引号。

<a href='#' onclick=\"toggle_visibility('something$i');\">

代码看起来像这样:

$i = 1; // ID Counter
while($row = mysql_fetch_array($result))
{
   echo "<h1>$row[title]</h1>";
   echo "<p class ='second'>$row[blog_content]</p> "; 
   echo "<p class='meta'>Posted by .... &nbsp;&bull;&nbsp; $row[date] &nbsp;&bull;&nbsp; <a href='#' onclick=\"toggle_visibility('something$i');\">Comments</a><div id='something$i' style='display: none;'>$row[comment]</div>";
   $i++; // Increment counter
}

答案 1 :(得分:0)

转义引号:

$blah = "onclick='toggle_visibility(\"something2\");'>Comments</a>"

有一种更简单的隐藏/显示下一个兄弟的方法......

<a href="#" onclick="toggle(this,event)">try this</a>
<div style="display:none">some hidden content</div>​

function toggle(el,ev) {
    ev.preventDefault();  // prevent the link from being followed
    el = next(el);        // get the next element
    if (el.style.display == "none") { // toggle the display
        el.style.display = "block";
    } else {
        el.style.display = "none";
    }
}
/* 
   Credit to John Resig for this function 
   taken from Pro JavaScript techniques 
*/
function next(elem) {
    do {
        elem = elem.nextSibling;
    } while (elem && elem.nodeType != 1);
    return elem;                
}
​

Working example

答案 2 :(得分:0)

当while循环执行时,你可以在你的代码中输入一个计数器,为每个注释div动态生成唯一的id。或者,您可以从id的查询结果中提取一个唯一字段,只要稍后如果它最终被使用就适当地连接到它并在其余代码中保持一致。

或者

$count = count($result);
...
while (...){
  $count--;
  echo '... id="something'. $count .'" ...'
}

...或

while (...){
  echo '... id="something'. $row['ID'] .'" ...'
}