Показване на голям коментар от малък JS.

AAtanasov

Registered
Здравейте, имам наредени 10 коментара например . Петия и шестия са дълги.

Написах на php, който смалява коментарите и отдолу има линк, да се покаже целия коментар.

PHP:
  if(strlen($commentnum[textcomment]) > 400) {
                          $newcomment = substr("$commentnum[textcomment]", 0, 400);
                                    echo "<p>$newcomment....<br /></p>";
                                    echo "<p>Този коментар е твърде голям. 
Ако искате да го прочетете натиснете 
<a href='news.php?id=$commentnum[idnews]&action=view&
idcomment=$commentnum[idcomment]'>тук</a></p>";
 
                            } else {
                            
                            
                            echo "<p> $commentnum[textcomment]  </p>"; }

Искам със JS като се натисне линка тук. На коментар, който е по дълъг, да се покаже целия коментар. Опитах се с php да го направя но показва всички големи коментари.
Ако не сте ме разбрали, може да видите нагледно този линк.
http://www.sportal.bg/news.php?news=323249
Коментар номер 3 на новината.

Приемам всякакви предложения по проблема. Благодаря предварително.
 
Задачата ти се свежда то това да скриваш и да показваш съдържание на сайта, т.е. CSS - display: none & block. В зависимост от това до колко елегантно да е решението, може да го направиш по няколко начина:

1. Разделяш коментара на две части - първата която се вижда, втората, която стои скрита, после добавяш линка за показване и на втората част.

Код:
if(strlen($commentnum[textcomment]) > 400) {

                          $newcomment1 = substr($commentnum[textcomment], 0, 400);
                          $newcomment2 = substr($commentnum[textcomment], 400);

                                    echo "<p>$newcomment1....</p>";
                                    echo "<p style='display: none;'>$newcomment2</p>";

                                    echo "<p>Този коментар е твърде голям. Ако искате да го прочетете натиснете <a href='javascript:void(0);' onclick='$(this).parent().prev().show();'>тук</a></p>";
 
                            } else {
                           

                            echo "<p> $commentnum[textcomment]  </p>"; }


2. Отново две части но в този вариант първия параграф съдържа само кратката версия на коментара, втория параграф съдържа пълния коментар. Като се кликне на линка, първия параграф се скрива и се показва втория параграф.
Код:
if(strlen($commentnum[textcomment]) > 400) {

                          $newcomment = substr($commentnum[textcomment], 0, 400);


                                   echo "<p>";
                                    echo "$newcomment1...<br />";
                                    echo "Този коментар е твърде голям. Ако искате да го прочетете натиснете <a href='javascript:void(0);' onclick='$(this).parent().next().show();'>тук</a>";
                                    echo "</p>";
     

                                    echo "<p style='display: none;'>$commentnum[textcomment]</p>";


                            } else {
                           

                            echo "<p> $commentnum[textcomment]  </p>"; }

Там където е пълния текст пък може да добавиш линк да се скрива пълния коментар и да показваш краткия.
 
Благодаря за бързия отговор. Нещо не работи при мене. Утре ще го гледам, че вече главата ме боли.

exec каза:
Задачата ти се свежда то това да скриваш и да показваш съдържание на сайта, т.е. CSS - display: none & block. В зависимост от това до колко елегантно да е решението, може да го направиш по няколко начина:

1. Разделяш коментара на две части - първата която се вижда, втората, която стои скрита, после добавяш линка за показване и на втората част.

Код:
if(strlen($commentnum[textcomment]) > 400) {

                          $newcomment1 = substr($commentnum[textcomment], 0, 400);
                          $newcomment2 = substr($commentnum[textcomment], 400);

                                    echo "<p>$newcomment1....</p>";
                                    echo "<p style='display: none;'>$newcomment2</p>";

                                    echo "<p>Този коментар е твърде голям. Ако искате да го прочетете натиснете <a href='javascript:void(0);' onclick='$(this).parent().prev().show();'>тук</a></p>";
 
                            } else {
                           

                            echo "<p> $commentnum[textcomment]  </p>"; }


2. Отново две части но в този вариант първия параграф съдържа само кратката версия на коментара, втория параграф съдържа пълния коментар. Като се кликне на линка, първия параграф се скрива и се показва втория параграф.
Код:
if(strlen($commentnum[textcomment]) > 400) {

                          $newcomment = substr($commentnum[textcomment], 0, 400);


                                   echo "<p>";
                                    echo "$newcomment1...<br />";
                                    echo "Този коментар е твърде голям. Ако искате да го прочетете натиснете <a href='javascript:void(0);' onclick='$(this).parent().next().show();'>тук</a>";
                                    echo "</p>";
     

                                    echo "<p style='display: none;'>$commentnum[textcomment]</p>";


                            } else {
                           

                            echo "<p> $commentnum[textcomment]  </p>"; }

Там където е пълния текст пък може да добавиш линк да се скрива пълния коментар и да показваш краткия.
 
За да нямаш проблеми с трасирането при jQuery - parent().prev().show()

на скрития елемент сложи id, например <p id="full_<?php echo $comment_id; ?>">скрития коментар</p>

и след това JS кода се опростява до $('#full_32').show() или още по-интересното - $('#full_32').fadeToggle();
 

Back
Горе