スタートページ>
Javascript>
呼出しHTML
例4:名称付のパラメタ渡し 連想配列になる
このページ:link-para-receive4
このHTMLは、linl-para.htmlから「<a href="link-para-receive4.html?e=abc&j=日本語" >」で呼び出されました。
そして、
paraValue("e") = "abc";
paraValue("j") = "日本語";
として、パラメタの値をパラメタ名の連想配列として取り扱えるようにします。
このHTMLおよびリンク元のHTMLの文字コードは UTF-8 です。
説明
<script type="text/javascript">
function init() {
var paraPair = new Array();
var paraName; // 行A
var paraValue = new Array();
var パラメタ部分 = location.search.split("?")[1];
var para = パラメタ部分.split("&");
var パラメタ数 = para.length;
for (var i = 0; i < パラメタ数; i++) {
paraPair = para[i].split("=");
paraName = decodeURIComponent(paraPair[0]); // 行B
paraValue[paraName] = decodeURIComponent(paraPair[1]); // 行C
}
document.getElementById('表示場所').innerHTML
= 'paraValue["e"]=' + paraValue["e"] + '<br>' // 行D
+ 'paraValue["j"]=' + paraValue["j"];
}
</script>
<body onLoad="init()">
<div id="表示場所" class="red"></div>
- 連想配列とは、行Dのように
連想配列名[キー名] = 値
の形式になります。通常の配列では添字が自然数であるのに対して連想配列では文字列になるだけで、取り扱いは通常の配列と同じです。
ここでは、キー名が "e" などの paraName であり、その値は paraValue["e"] となります。
- そのため、例3とは異なり、paraName は配列として保存する必要はありません(行A)。行Bで得たパラメタ名を行Cで添字にしているだけです。
これ以外は、例3(receive3.html)と同様です。
例4の形式は次のような利点があり、例3よりも実務的でしょう。
- if (paraValue["e"] == "abc") { ……} のような記述ができます
- var paraValue = new Array(); の直後で、
paraValue["e"] == "abc";
のように記述しておくことにより、パラメタで「e=~」が省略されたときのデフォルト値を設定しておくことができます。