jsでscriptで埋めた時の?以降の引数を連想配列として取得する
Sunday, December 12, 2010 11:02:54 AM

まあどこでもよくあるけど作ってみたくなったので作った。
何かタイトルだけ見るとよく分からないかもしれないけど、
<script src="script.js?key=value&key2=value2" type="text/javascript"></script>
の引数部分を連想配列に収めますよっと。こういうのは嫌というほどある気がするけどね。
早速html部分。
html
<script src="script.js?key=abcde" type="text/javascript"></script>端折っちゃうけど、script指定部分だけ。とりあえず適当に引数を指定します。それぞれキーと値。
js
あたりまえだけどさっきのhtmlで読み込むjsに書く。var scripts = document.getElementsByTagName("script");
var script = scripts[scripts.length - 1];
var uri = script.src;
var result = parseParam(uri.slice(uri.lastIndexOf("?")+1));
/*resultの中身
for(var i in result){
document.write(i +"="+ result[i]+"<br />");
}
*/
function parseParam(param){
var keyAndValue = param.split("&");
var getParam = [];
for(var i = 0; i < keyAndValue.length; i++){
var temp = keyAndValue[i].split("=");
getParam[temp[0]] = temp[1];
}
return getParam;
}
解説ー
最初の三行で自身のscriptタグを取得。
parseParamに?以降、つまり引数の部分だけ取得して引き渡しています。
渡された引数はまず&で分解して配列に格納、その配列をさらに分解して"="区切りで分解、0がキー、1が値となる。
これを変数にぶち込んでいって最後にリターン。
コードはコメントアウトしてるけど直せばどうなってるかわかるよ。
ではでは。













