Jump to content

Javascript not working appropriately in PHP while loop.


drayarms

Recommended Posts

Hello all,

 

I wasn't sure whether to post this problem under this forum or the JS forum, but I figured it would be more appropriate here, since the underlying problem seems to be related to the PHP bit. 

 

So basically here's the situation.  I'm trying to retrieve pictures from a database via a while loop, display these pictures on a page, and under each of the pictures, I want to feature a comment box where users can post comments. I want to make the comment box invisible until the user clicks on a comment link which should tiger and onclick event that makes the box appear and the comment link disappear.  This works only for the first row at the top of the page.  It doesnt work for the rest. When I manually change the display attribute of the comment box div to "block", the div becomes visible for all the rows.  But when I try to use the JS funciton to toogle it from "block" to "none", it only works like I said for one row, the first.  I'm getting the impression after reading on similar problems from other forums that a CSS id can only manipulate a unique element on an HTML page but won't all the comment boxes be considred different instances of the same elements in this case? I'm at a total loss and would appreciate any suggestions.

 

Here is a simplified version of  the while loop that prints out the pictures from the database and the database alongside the comment link and the comment box, and also the CSS that contain the styles of the elements to be manipulated and finally the Javascript that does the magic.

 

 


<?php

while ($row = mysql_fetch_assoc($result)){ 



//Print the data.

          echo "<p id = 'status_stream' >" . $row['data'] . "</p>";


//Print the comment link

echo "<p id = 'comment_stream' onclick = 'show_comment_stream_div()' > <a href = 'javascript:;'> Comments: </a> </p>";

//Print out the comments div.

echo " <div id = 'comment_stream_div' onmouseover = 'show_close_comment_stream_div()' onmouseout = 'hide_close_comment_stream_div()'> <p id = 'close_comment_stream_div' onclick = 'hide_comment_stream_div()'> <a> X </a> </p>

    <form action = 'status_comment_entry.php' visibility ='inherit'>

<input id = 'comment_stream_input' type = 'textarea' rows = '8' cols = '20' value ='' name = 'comment' /> <br/>

<input id = 'comment_stream_submit' type = 'submit' value = 'submit!' name = 'submit' />

    </form>

</div>";



}//End of while loop

?>











#comment_stream
{position:relative;bottom:70px;left:230px; color:#2d73b9; display:block;}


#comment_stream_div
{position:relative;bottom:67px;left:121px; width:240px; height:75px; border-style:solid; border-width:1px; border-color:#c0c0c0; display:block;}















<script  type='text/javascript'>

        function show_comment_stream_div() {
           if(document.getElementById('comment_stream_div').style.display = 'none')  
             {document.getElementById('comment_stream_div').style.display = 'block';} else 
             {document.getElementById('comment_stream_div').style.display = 'block';}

   if(document.getElementById('comment_stream').style.display = 'block')
             {document.getElementById('comment_stream').style.display = 'none';} else
             {document.getElementById('comment_stream').style.display = 'none';}

}

</script> 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.