私が初めて Web 開発を独学で学んだ頃は、いわゆる DIV/CSS レイアウトはなく、テーブル レイアウトが主流でした。その時、グリッド内の空白のセルをどのように埋めるかという疑問が生じました。 ——これは私が自社の製品ページを制作する際に直面した頭痛の種です。私はプログラマー出身ではないので、アルゴリズムが少し関わる問題に直面すると途方に暮れてしまいます(笑)。ちなみに、ページングアルゴリズムには苦労したのを覚えています。 いわゆるグリッドとは、3 行 x 4 列 = 合計 12 個のセルを持つ表を指します。製品が 10 個しかない場合は、表の 10 個のセルにのみデータが入力され、残りは空白になります。空白であっても、<td></td> 要素をレンダリングする必要があります。レンダリングしないと、テーブルが歪んで見えます。もちろんハードコードすることも可能ですが、問題はテーブルが ASP によって動的にレンダリングされることです。したがって、空白の TD をどのように計算して表示するかが問題になります。当時はいくつかの方法を思いつきましたが、今思えば、もちろんあまり合理的ではなかったのですが、とにかく、表示できる限りは試してみるしかありませんでした...ハハ。 その後、DIV/CSS の時代になると、Table は非推奨になりました。つまり、アルゴリズムは気にしません。 ——その後のプロジェクトで、テーブルレイアウトがまだ適用可能であることがわかったので、この小さな問題について考えました。 JS を使用した動的制御のコードは次のとおりです。 /** * @class レンダリングテーブル * 配列と列数を入力して、表マークアップを生成します。 * @param {配列} リスト * @param {数値} 列数 * @param {関数} getValue */ 定義(関数(require, exports, module) { module.exports = 関数 (リスト、列、getValue) { this.list = リスト; this.cols = cols || 5; this.getValue = getValue || this.getValue; } module.exports.prototype = (新しい関数(){ this.render = 関数(リスト){ リスト = リスト || this.list; var len = リストの長さ; var cols = this.cols; // 桁数 var rows; var 残り = len % cols; var html = []; 行数 = 長さ / 残り; if(remainder == 0){ // 余りなしで割り算して直接処理できる list.forEach(addTr.bind({ 列: 列、 html: html、 getValue: this.getValue })); }else{ // 残りを処理する var remainderArr = list.splice(list.length - remainder); リスト.forEach(addTr.bind({ 列: 列、 html: html、 getValue: this.getValue })); // 空白を埋めます var emptyArr = new Array(cols - remainnerArr.length); 空のArr = 空のArr.join('空'); 空のArr = 空のArr.split('空'); // 残り + 空きスペース remainnerArr = remainnerArr.concat(emptyArr); if(remainnerArr.length != cols){ throw '最後の行の長さが間違っています!長さは ' + cols; である必要があります。 } 残りのArr.forEach(addTr.bind({ 列: 列、 html: html、 getValue: this.getValue })); } addTable(htmls.join('')) を返します。 } /** * 表示された値を取得するためのデフォルトの関数。この関数は通常オーバーライドする必要があります。 * @param {混合} * @return {文字列} */ this.getValue = 関数(データ){ データを返します。 } /** * 各値に <td></td> を追加します。行がいっぱいの場合は、</tr></tr>を追加します。 * @param {Mixed} アイテム * @param {数値} i * @param {配列} arr */ 関数 addTr(item, i, arr){ var html = '<td>' + this.getValue(item) + '</td>'; もし(i == 0){ html = '<tr>' + html; }そうでない場合、(i + 1) % this.cols == 0 && i != 0){ html += '</tr><tr>'; }そうでない場合(i == arr.length){ html += '</tr>'; } this.htmls.push(html); } /** * * @param {文字列} html */ 関数 addTable(html){ '<table>' + html + '</table>' を返します。 // var table = document.createElement('table'); // テーブルの内部HTML = html; // テーブル境界="1"; // document.body.appendChild(テーブル); } }); }); これはすぐに思いつく問題だと思うかもしれませんが... 当時、私は転職活動中でした... ちょっとした「技術的な内容」の問題は、私にとってはつまずきの石になってしまいました... 2019-5-18 JSTLメソッド: <% //空白セルを補完します String tds = ""; int maxTds = 9; リスト<?> list = (リスト<?>)request.getAttribute("list"); for(int i = 0; i < (maxTds - list.size()); i++ ) { tds + = "<td></td>"; } リクエストの属性を設定します("tds", tds); %> <テーブル> <tr> <c:foreach items="${list}" var="item"> <td> <h3>${item.name}----${totalCount}</h3> <p></p> <div></div> </td> <c:if test="${((currentIndex + 1) % 3) == 0}"> </tr> <tr> </c:if> <c:if test="${((currentIndex + 1) == totalCount) && (totalCount != 9)}"> ${tds} </c:if> </c:foreach> </tr> </テーブル> HTML テーブルの空白セルを完成させる方法についての記事はこれで終わりです。HTML テーブルの空白セルを完成させる方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
——「MySQL in Simple Terms (第 2 版)」からのメモ数値型整数型バイト最小最...
ほとんどのアプリケーション シナリオでは、緊急時に備えて重要なデータをバックアップし、安全な場所に保...
まず、Alibaba Cloud の公式チュートリアルをご覧ください。ファイルの説明: 1. 証明書...
JavaScript スクリプトは HTML 内のどこにでも埋め込むことができますが、いつ呼び出され...
virtualenv は、分離された Python 仮想環境を作成するためのツールです。独立したディ...
序文元のプロジェクトは、パブリックネットワークgitlabに配置されていました。セキュリティ上の理由...
cellspacing は表内のセル間の距離です。セルパディングは、表のセル内の空白スペースです。一...
1. ボタンが押されたときに点線のボックスをキャンセルする<br />入力に属性値hid...
今日会社から課題をもらったのですが、効果図は以下のとおりです。 どのような効果を実現したいかは特に決...
mysql 5.7.19 winx64解凍版のインストールチュートリアルを収録しました。具体的な内容...
この記事では、Harbor アーキテクチャの構成と、実行時に各コンポーネントを使用する方法について説...
この記事の例では、vueシャトルボックスを上下に動かすための具体的なコードを参考までに共有しています...
導入インターネット アプリケーションの普及に伴い、膨大なデータの保存とアクセスがシステム設計における...
最近、自宅サーバーにクラウドディスクを導入する予定なので、一連の環境構築作業を始めました。MySQL...
目次1. テレポートの使用2. モーダルダイアログコンポーネントを完成させる3. コンポーネントのレ...