前回修正した「displayError」関数の最後に、「updateAddressDisplay」への呼び出しがあったので、今回はこの関数の整理を行う。
まずはコードだ。
function updateAddressDisplay() {
let baseAddress = mainAddressString; // ベース住所を定義
// block_lot, building, room をベース住所に追加
if (currentBlockLot) {
baseAddress += currentBlockLot;
}
if (currentBuilding) {
baseAddress += currentBuilding;
}
if (currentRoom) {
baseAddress += ' ' + currentRoom;
}
// address(日本語住所)のテキストを更新
document.getElementById('address').textContent = baseAddress.trim();
}
関数名でわかるように、これは画面上での住所表示を更新する関数だ。
2行目の「mainAddressString」は、スクリプトの冒頭で定義したグローバル変数(下記コード参照)で、郵便番号から取得した住所、つまり都道府県+市区町村+町域を含めた住所のことだ。これを「updateAddressDisplay」内では「baseAddress」に代入している。
<script>
let mainAddress = '';
let mainAddressString = ''; // メイン住所(postal_codeで取得)
let currentBlockLot = '';
let currentBuilding = '';
let currentRoom = '';
5行目以降は、現在入力されている番地、建物名、部屋番号をそれぞれベース住所に追記している。「currentBlockLot」などは上記の通り、これらもグローバル変数で、まだ整理していない別の関数内で、フォーム要素から値を取っている。
番地、建物名、部屋番号のどれかが欠けていてもいいし、全部欠けても大丈夫。いずれ「baseAddress」が出来上がる。
そして16行目で画面上の「address」要素、つまり日本語住所が表示される下記のエリアのことだが、に、ベース住所こと「baseAddress」を反映する。
この関数については修正したいところがないので、JSDocコメントだけChatGPTに頼もうと思う。
突拍子もない形で期待を裏切るのがChatGPTの可愛いところ。なにゆえこの長大な英文のコメントをつけてくれたのだ。そのように頼んでいないはず。
また「@function」だけというのも気になる。いつもは引数を渡したり、Returnさせたりしているのでそういうものが書かれるが、もしかしてこの関数にそういうものがないから「@function」だけになっているのか?
引数も取らず、returnもしない関数の場合は「@function」だけでいいそうだ。また新しい知識を身につけることができた。
今回は以上だ。