javascriptは趣味で書いている程度です。
今回スクリプトを書くにあたり、ちゃんと勉強しないといけないと思い、過去に買ったJavaScript第6版(サイ本?)などで調べました。
2012年8月15日 初版第1刷発行
javascriptのトレンドは追えていませんが、7版が出てるんですね。
JavaScript 第7版 単行本(ソフトカバー) – 2021/12/2グローバル変数(Windowプロパティ)について
JavaScript第6版の
13章Webブラウザに組み込まれたJavaScript
13.1 クライアントサイドJavaScript
に、Windowオブジェクトについて記載があり、 プロパティがグローバル変数として使用できる とありました。
14章Windowオブジェクト
14.8 複数のウィンドウとフレーム
14.8.1 ウィンドウのオープンとクローズ
には window.open()メソッドを使って作成されたウィンドウ中では、openerプロパティを使って、そのウィンドウを開いたスクリプトのWindowオブジェクトを取得できる とあります。
main.htmlで、以下のグローバル変数を定義し、
var selected_pref = {};
sub.htmlで、下記のように代入しています。
window.opener.prefcode[x[i].id]=x[i].value;
メインウィンドウの表示部分について
都道府県コードと都道府県名を表示するテーブルは、更新時は一度テーブルをドキュメントから削除し、
if( node = document.getElementById("prefcode") ){ node.parentNode.removeChild(node); }
新しくテーブルを作ってドキュメントに追加しています。
tbl.appendChild(tblbody); body.appendChild(tbl);
参考
15章ドキュメントの制御
15.1 DOMの概要
15.2ドキュメント要素の選択
15.6 ノードの作成、挿入、削除
sort について
main.html、sub.htmlで表示する都道府県コード、都道府県名のテーブルは、都道府県コードの昇順で表示するようにしました。
main.html
keys = Object.keys(prefcode); keys.sort(function(a,b){ return a - b; });
sub.html
keys = Object.keys(pref); keys.sort(function(a,b){ return a - b; });
ソートの比較関数でよく出てくる、a, b というのがいつも謎でした。
perl とかも謎すぎ
@array = (15,23,7,2,20); @sorted = sort { $a <=> $b } @array;
が、以下に説明がありました!
Array.prototype.sort()
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
引数 compareFn 省略可 ソート順を定義する関数を指定します。省略された場合、配列の各要素は文字列に変換され、各文字の Unicode コードポイント順に従ってソートされます。 a 比較する第一要素。 b 比較する第二要素。
compareFn(a, b) の返値 | ソート順 |
> 0 | a を b の後に並べる |
< 0 | a を b の前に並べる |
=== 0 | a と b の元の順序を維持する |
参考)sortメソッドについては以下の本に記載があります
・JavaScript第6版:7.8.3 sort()メソッド に約1ページ分説明あり
・JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス:8章メソッド array.sort(comparefn)に約3ページ分説明あり