編集可能なテーブル関数を実装するには、次の問題を解決する必要があります。
1. 変更するデータがテーブル内のどの列であるかを明確にする (これらのセルを見つける方法)。
2. セルを作成する方法。 editable 編集済み;
3. セルのいくつかの重要なイベントを処理する方法。
4. ブラウザー間の問題を解決します。
上記の問題は、jQuery を使用して段階的に解決できます。
1. 表を描きます
まず表を描きます。 " -//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
000001 | /tr> |
李思 |
五 |
以下のように表示されます。 editTable01.jpg 明らかにテーブルのようには見えません。枠線がなく、見苦しいです。そこで、最初にこのテーブルにいくつかのスタイルを設定しましょう。 コード 2: コードをコピー コードは次のとおりです: body{}{ フォントサイズ: 14px; } テーブル{}{ カラー: #4F6B72; ボーダー: 1px ソリッド 幅: 400px ; } th{}{ 幅: 50%; 境界線: 1px ソリッド } td{}{ 幅: 50 %; border: 1px Solid ただし、セル間には重複する境界線がまだ存在します。重複した境界線を削除するには、このような属性をラベル セレクター テーブルに追加するだけです。 border-collapse: Collapse; > コードをコピー コードは次のとおりです: table{}{ color: #4F6B72; 1px ソリッド #C1DAD7; border-collapse: 400px; } 2.テーブルのセル グリッドが編集可能な列になります テーブルを描画した後、テーブル内の番号付きの列を編集可能な列として選択します。この列のセルを編集可能にするには、これらの列にテキスト ボックスを挿入する必要があります。この列のセルの onclick イベントを通じてテキスト ボックスを挿入します。 コードをコピー コードは次のとおりです: $(document).ready(function(){ //学籍番号の列のセルをすべて検索 //学籍番号の列のセルはすべての TD にあるためは偶数 (0,2,4,6) なので、even var numTd = $("tbody td:even");//Click を通じて td 内の偶数のセルにフィルターをかけることができます。これらの td、テキスト ボックスを作成します numTd.click(function(){ //テキスト ボックス オブジェクトを作成します var inputobj = $(""); //現在クリックされているセルオブジェクトを取得します var tdobj = $(this); //テキストボックスの境界線を削除します inputobj.css("border","0"); //テキストボックスとセルの幅を一致させます inputobj.width(tdobj.width()); //テキストボックスのフォントサイズをセルのフォントサイズと同じにしますthe cell inputobj.css( "font-size",tdobj.css("font-size")); //テキスト ボックスとセルのフォントを一致させます inputobj.css("font- family",tdobj.css( "font-family")); //テキストボックスとセルの背景を一致させる inputobj.css("background-color",tdobj.css("background- color")); //appendTo メソッドはテキスト ボックスを td に追加します inputobj.appendTo(tdobj); }); }); コード 4: コードをコピーします コードは次のとおりです: $(document) .ready( function(){ //学籍番号列のセルをすべて検索 //学籍番号列のセルの位置は全tdで偶数(0, 2, 4, 6) したがって、even を使用すると、td の偶数番号のセルにフィルターをかけることができます。 var numTd = $("tbody td:even") //これらの td をクリックすると、テキスト ボックスが作成されます numTd.click( function(){ //テキスト ボックス オブジェクトを作成します var inputobj = $(""); //現在クリックされているオブジェクトを取得しますcell object var tdobj = $(this); //セル内のテキストを取得します var text = tdobj.html(); //セル内のテキストをクリアします tdobj.html("" ); //テキストボックスの枠線を削除します inputobj.css("border","0"); //テキストボックスとセルの幅を作成しますconstant inputobj.width( tdobj.width()); //テキストボックスのフォントサイズをセルのフォントサイズと同じにします inputobj.css("font-size", tdobj.css("font-size")); //テキストボックスとセルのフォントを一致させる inputobj.css("font-family",tdobj.css("font-family" )); //テキストボックスとセルを同じにする 背景は一貫したままにする inputobj.css("background-color",tdobj.css("background-color")); .css("color","#C75F3E"); / /テキスト ボックスに値を割り当てます inputobj.val(text); //appendTo メソッドはテキスト ボックスを td inputobj.appendTo(tdobj); }); }) ; しかし、上記のコードには非常に面倒な利点があります。連結。上記のコードは、次のように連結することで簡略化できます: コード 5: コードをコピー コードは次のとおりです: $(document).ready(function(){ //学籍番号列のセルをすべて検索//すべての td における学籍番号列のセルの位置は偶数 (0 、2、4、6) なので、even var numTd = $("tbody td:even");// をクリックすると、td 内の偶数のセルにフィルターできます。これらの td、テキスト ボックスを作成します numTd.click(function(){ //テキスト ボックス オブジェクトを作成します var inputobj = $(""); //現在クリックされているセル オブジェクトを取得します var tdobj = $(this); //セル内のテキストを取得します var text = tdobj.html(); //セルのテキスト tdobj.html(""); inputobj.css("border","0") .css("font-size",tdobj.css("font-size) ")) .css("フォントファミリー",tdobj.css("フォントファミリー")) .css("背景色",tdobj.css("背景色")) .css ("color","#C75F3E") .width(tdobj.width()) .val(text) .appendTo(tdobj) }); 🎜>}) ; これで、テキスト ボックスがテーブルに正常に挿入され、セルを編集できるようになりました。 editTable04.jpg しかし、明らかな バグがあります。同じセルを再度クリックすると、次のような効果が表示されます。 editTable05.jpg |