【ajax:第三回】非同期処理を使った、動的htmlタグ生成方法

Javaウェブアプリ開発

はじめに

DreamHanksの松下です。

今回からajaxについての解説を2回に分けて行いたいと思います。
前回はajaxの概要と簡単な使い方について解説します。
今回はajaxを使ってサーバーにリクエストを投げて、サーバーからレスポンスを返す方法

連載記事まとめ

 

 

サンプルアプリの仕様について

検索ボタンを押下したときに、赤枠の一覧が非同期で動的にHTMLが生成されます。
今回はこちらの動的HTML生成方法について解説します。

◆検索ボタン押下前

◆検索ボタン押下後

 

動的HTML生成方法

今回自動生成をするのは、tableタグ内のtbodyタグについて自動生成します。
上記のようにtheadタグに関しては、あらかじめ記述して画面に表示しております。

 

今回のajaxにおける自動生成の部分は「.then(function(resultboardList){ この中 });」です

 

tbodyを生成

さっそくajax内の1行目にtbodyを生成します。

document.createElementメソッドを使って任意のタグを設定すると、htmlタグが生成されます。
そして、setAttributeメソッドを使って、作ったtbodyタグにクラス名を付属します。

 

レスポンスを使ってループ処理

サーバーから取得した掲示板のレコード情報のリスト分処理を行います。

htmlタグ生成処理の解説

①テーブルの行にあるhtmlタグtrをtbodyと同じ要領で生成します。

 

②列を作るためにループ処理

 

③列を表すhtmlタグtdタグを生成

 

④チェックボックスを作るためにinputタグを生成

inputタグを生成して、この後の判定処理でこのinputタグをcheckboxにしていきます。

 

④idだった場合チェックボックスを生成する

取得したレスポンスは下記のようなレコードを取得しています
| id | title | position | check_flg | creat_at |
| id | title | position | check_flg | creat_at |
| id | title | position | check_flg | creat_at |

この時にidだった場合、下記の処理を行います

 

チェックボックスにいろいろ要素を付けていますが、ここが一番難しいと思います。
要するにチェックボックスのクラス要素が他と被らないresultboardList[i][“id”]を名前にしたいのです。

resultboardList[i][“id”]はi番目のidカラムの値を設定するという意味です。

ヘッダー:| id | title | position | check_flg | creat_at |
1番目:| id001| 韓国料理食べた | 1 | 1| 20201010 |
2番目:| id002 | 日本料理食べた | 2 | 0| 20201010 |
3番目:| id003 | 中国料理食べた | 3 | 0| 20201010 |

1番目のidカラムというと、id001を設定するという意味です。

 

◆オンクリック要素も付属させる

そして、inputCheckBox.onclick = function check(){ 内容 }をすることによって
チックボックスにonclick要素まで付属させます。

 

◆なおかつ、check_flgが1の場合はチェックをする

 

◆要素にアペンドする

このようにして、生成されたHTML要素は親のノードにくっつけなくては
宙づり状態となり画面上では現れません(表示されません)

 

下記の順番で順々にアペンドします。
親要素(document.getElementById(‘maintable’))> tbody > tr > td > checkbox

DOMスクリプティングを学ぼう

HTMLタグの動的生成方法の一例を学んでいただいたところで、もっと根っこの部分である
DOMスクリプティングについて解説します。

HTMLは下記のようにツリー構造として表せます。
htmlタグ > bodyタグ > 複数のform > 複数のinputタグなど

 

DOM(Document Object Model)とは,HTMLやXMLといったマークアップ(ツリー構造)言語へアクセスするためのAPIです。
DOMスクリプティングとは,JavaScriptのようなプログラミング言語から,HTMLやXMLを操作するための方法を規定したものといえます。

 

 

DOMスクリプティングのコツは

どのようにその木の先の葉っぱであるタグを特定し、効率よくやりたいことを行う。

タグの特定といっても、幹からたどっていく方法もあれば
タグのid名を一発で狙い撃ちする方法もあります。
いろいろなDOMツリーへのアクセス方法があるので、どのような方法があるのかは
あらかじめリファレンスを見て覚えておきましょう。

できることは大きく4つあります。
しかし、その4つの中でもいろいろなことができるので、どのような方法があるのかは
あらかじめリファレンスを見て覚えておきましょう。
・値の取得
・値の変更
・スタイルの変更 例:cssで色付け
・イベントを付ける 例:オンクリック要素を付属

上記のことを予め知識としてある程度知っていると
DOMスクリプトを読んだときの基礎体力となります。

DOMスクリプティングって何?なにができるの?というレベルだと
自力でスクリプトを読むのは検索回数が多くなり、長いスクリプト読むときについていけなくなり
挫折する大きな原因となります。

予めなにができるのか?どんな方法があるのか?を時間がるときに覚えておきましょう。

 

 

コメント