-1

データベースからコメントを取得します。ユーザーが「devam」リンクをクリックすると、コメント全体が表示されるようになります。

そのために、以下のコードを書きました。コメントtemplate_liteの文字数が 95 を超えると切り捨てられます。以下のコードでは、「devam」リンクをクリックすると、長いコメントが表示されますが、最初のコメントのみが表示されます。なんで?どうしたの?

foreach value=users from=$comment}
    <tr>
        <td>{$users.ADD_DATE}</td>
        <td>{$users.NAME}</td>
        {if $users.COMMENT|count_characters > 95}
            <td><span id="comment12kisa">{$users.COMMENT|truncate:95:"..."}
                </span><a href="" onclick="$('#comment12kisa').html($('#comment12uzun').html());return false;">devami</a></td>
        {else}
            <td><span id="comment12uzun">{$users.COMMENT}</span></td>
        {/if}
        <td><center><input type="checkbox" name="checkComment[]" value={$users.ID} /></center></td>
    </tr>

一意の ID が必要です。

何が問題なのですか:

 {foreach value=users from=$comment}
     <tr>
         <td>{$users.ADD_DATE}</td>
         <td>{$users.NAME}</td>
         {if $users.COMMENT|count_characters > 95}
             <td><span id="comment12kisa_{$users.COMMENT.id}">{$users.COMMENT|truncate:95:"..."}
             </span><a href="" onclick="$('#comment12kisa_{$users.COMMENT.id}').html($('#comment12kisaa_{$users.COMMENT.id}').html());return false;">devami</a></td>
         {else}
             <td><span id="comment12kisaa_{$users.COMMENT.id}">{$users.COMMENT}</span></td>
         {/if}
         <td><center><input type="checkbox" name="checkComment[]" value={$users.ID} /></center></td>
     </tr>
 {/foreach}
4

3 に答える 3

1

COMMENT の完全な値を隠し要素に入れてから、それを表示する必要があります。現在、HTML で切り捨てられたバージョンのみを生成しています。

{if $users.COMMENT|count_characters > 95}
    <td><span id="comment12kisa">{$users.COMMENT|truncate:95:"..."}
    </span>
    <span id="comment12uzun" style="display"none">{$users.COMMENT}</span> <-- you need THIS
    <a href="" onclick="$('#comment12kisa').html($('#comment12uzun').html());return false;">devami</a></td>
{else}
于 2012-03-28T20:17:52.270 に答える
1

スパンごとに 1 つの ID があるためです。comment.id解決策として、次のようにスパンに追加できます。

<span id="comment12kisa_{$users.COMMENT.id}">
    {$users.COMMENT|truncate:95:"..."}
</span>

もちろん、JavaScript コードでも変更する必要があります。

于 2012-03-28T20:19:45.753 に答える
0

問題は、コメントの切り詰められたバージョンまたは完全なバージョンしかなく、両方がないことです。コメントが 95 文字を超える場合は、フル バージョンをどこかに保存し、ユーザーがリンクをクリックしたときに表示する必要があります。

    {if $users.COMMENT|count_characters > 95}
        <td>
            <span id="comment12kisa">{$users.COMMENT|truncate:95:"..."}</span>
            <a href="" onclick="$('#comment12kisa').html($('#comment12uzun').html());return false;">devamı</a>
            <span id="comment12uzun" style="display:none">{$users.COMMENT}</span>
        </td>
    {else}
        <td>
            <span id="comment12uzun">{$users.COMMENT}</span>
        </td>
    {/if}
于 2012-03-28T20:21:06.100 に答える