0

たとえば、テーブルから 3 つの行があります。各行は、データベースからコンテンツを取得します。デフォルトでは、行が折りたたまれている場合、テキストは短縮されます -

trs[i].innerText = trs[i].innerText.substring(0,25) + '...';

ユーザーが div をクリックすると展開し、もう一度クリックすると折りたたまれます。

if(tr.style.height == "150px")
        {
             tr.style.height = "20px";
        }
    else {
        tr.style.height = "150px";
    }

これまでのところ、とても良いですが、div が折りたたまれている場合にのみテキストを短くしたいと考えています。私のソリューションでは、ページが読み込まれるとテキストが短縮されますが、行が展開されると短縮されたままになります。どうすればこれを修正できますか? 行が拡張されて元のデータを返す AJAX 関数を呼び出すときしか考えられませんが、それが最善の方法だとは思いません。前もって感謝します。

4

1 に答える 1

0

まず、短縮する前に全文を保存する必要があります。

trs[i].fullText = trs[i].innerText;
trs[i].innerText = trs[i].innerText.substring(0,25) + '...';

次に、ハンドラーで復元できます。

tr.innerText = tr.fullText;
tr.style.height = "150px";

ここにjsFiddleがあります。私はjQueryを使用して要素を選択していますが、とにかく正しいtrがあります。jQuery を使用している場合は$(tr).data("fullText", $(tr).text())、古いバージョンの Internet Explorer で DOM 要素にプロパティを追加することで発生するマイナーなメモリ リークを回避するために使用することもできます。

于 2012-12-03T11:02:00.493 に答える