-1

基本上通过单击“评论”链接,查询的最后结果应该显示出来,再次单击它应该被隐藏。我也尝试过 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 
} 
4

3 回答 3

5

这是一个循环,一遍又一遍地回显相同的东西,从而使所有的divs 具有相同的 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
}
于 2012-04-10T14:47:32.863 回答
0

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

任何一个

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

或者...

while (...){
  echo '... id="something'. $row['ID'] .'" ...'
}
于 2012-04-10T15:04:13.167 回答
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;                
}
​

工作示例

于 2012-04-10T14:47:23.143 回答