/*----------------------------------------
* getparam.js
* Copyright (C) 2020 StraightApps.com, All Rights Reserved
* October 30, 2020 初期版
* October 31, 2020 微調整
*-----------------------------------------*/
//----------------------------------------
// ページの読み込みが完了したら処理します
window.onload = function () {
// 通常 body タグの onLoad で呼び出していますが、この関数のため呼び出されないので、特別に呼び出し。
jsPutTopics('js-getparam');
let str = "パラメータはありません。";
let param = GetQueryString();
if (param != null){
str = "name = " + param["name"];
str += "
favorite = " + param["favorite"];
}
let elem = document.getElementById("param");
elem.innerHTML = str;
str = "パラメータはありません。";
param = GetQueryString2();
if (param != null){
str = "";
for (let i = 0; i < param.length; i ++){
if ( i > 0 ){
str += "
";
}
str += param[i].paramName + " = " + param[i].paramValue;
}
}
elem = document.getElementById("param2");
elem.innerHTML = str;
}
/*----------------------------------------
* パラメータ取得関数
* コメントは、次の場合の例です。
* js-getparam.html?name=Tom&favorite=pasta
*-----------------------------------------*/
function GetQueryString()
{
let elem = document.getElementById("data");
elem.innerHTML = "document.location.search = [" + document.location.search + "]";
// パラメータがないか、"js-getparam.html?" の場合
if (document.location.search.length < 2) {
return null;
}
// URL パラメータの最初の1文字(?記号)以降の文字列を取得します。
var query = document.location.search.substring(1);
// クエリの区切り記号 (&) で文字列を配列に分割します。
// "name=Tom", "favorite=pasta" のようになります。
var params = query.split('&');
var result = new Object();
for (var i = 0; i < params.length; i++) {
elem.innerHTML += ("
" + params[i]);
// パラメータ名とパラメータ値に分割します。
var element = params[i].split('=');
elem.innerHTML += (" -> " + element[0] + ", " + element[1]);
var paramName = decodeURIComponent( element[0] );
var paramValue = decodeURIComponent( element[1] );
// パラメータ名をキーとして連想配列に追加します。
result[ paramName ] = paramValue;
}
return result;
}
/*----------------------------------------
* パラメータ取得関数
* コメントは、次の場合の例です。
* js-getparam.html?name=Tom&favorite=pasta
*-----------------------------------------*/
function GetQueryString2()
{
//let elem = document.getElementById("data");
//elem.innerHTML = "document.location.search = [" + document.location.search + "]";
// パラメータがないか、"js-getparam.html?" の場合
if (document.location.search.length < 2) {
return null;
}
// URL パラメータの最初の1文字(?記号)以降の文字列を取得します。
var query = document.location.search.substring(1);
// クエリの区切り記号 (&) で文字列を配列に分割します。
// "name=Tom", "favorite=pasta" のようになります。
var params = query.split('&');
var result = [];
for (var i = 0; i < params.length; i++) {
//elem.innerHTML += ("
" + params[i]);
// パラメータ名とパラメータ値に分割します。
var element = params[i].split('=');
//elem.innerHTML += (" -> " + element[0] + ", " + element[1]);
var paramName = decodeURIComponent( element[0] );
var paramValue = decodeURIComponent( element[1] );
// パラメータ名と値をオブジェクト配列に追加します。
result.length = i + 1;
result[i] = new Object();
result[i].paramName = paramName;
result[i].paramValue = paramValue;
}
return result;
}
/*----------------------------------------
* リンク作成関数
*-----------------------------------------*/
function link()
{
let url, str;
url = 'js-getparam.html';
str = encodeURIComponent( document.getElementById("iname").value );
url += '?name=' + str;
str = encodeURIComponent( document.getElementById("ifavorite").value );
url += '&favorite=' + str;
str = '' + url + '';
// 出力します。
let elem = document.getElementById("link");
elem.innerHTML = str;
}