-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 に答える