/*---------------------------------------- * 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; }